Play Store Release

July 17, 2026 ยท View on GitHub

As of July 2, 2026, Google Play requires new apps and app updates to target Android 15, API level 35, or higher. The MAUI project targets API 36. Source: https://developer.android.com/google/play/requirements/target-sdk

.NET MAUI on .NET 10 supports Android API 36 and JDK 21. Source: https://learn.microsoft.com/en-us/dotnet/maui/whats-new/dotnet-10?view=net-maui-10.0

Microsoft documents AAB as the package used to publish .NET MAUI Android apps to Google Play. Source: https://learn.microsoft.com/en-us/dotnet/maui/android/deployment/?view=net-maui-10.0

Current Package State

  • Package id: com.telli.agentqi.mobile
  • Display name: AgentQi
  • Version: 0.1.0
  • Version code: 1
  • Minimum SDK: 26
  • Target SDK: 36
  • Release format: Android App Bundle (.aab)
  • Local publish output: src/AgentQi.Mobile/bin/Release/net10.0-android/publish/com.telli.agentqi.mobile-Signed.aab
  • GitHub release artifact: agentqi-mobile-aab when maintainers run the configured android-release workflow with signing secrets.

The repository never contains the upload key or its credentials. Fork maintainers must configure their own signing identity before attempting a store release.

Upload Signing

  • GitHub Actions secret names:
    • ANDROID_KEYSTORE_BASE64
    • ANDROID_KEYSTORE_PASSWORD
    • ANDROID_KEY_ALIAS
    • ANDROID_KEY_PASSWORD Back up the keystore and credentials outside the repository. Do not commit either file.

Prerequisites

  • .NET SDK 10.
  • JDK 21.
  • Android SDK platform 36.
  • MAUI Android workload.
  • Google Play signing enrollment or an upload keystore.
  • CI secrets for release builds:
    • ANDROID_KEYSTORE_BASE64: base64-encoded upload keystore.
    • ANDROID_KEYSTORE_PASSWORD
    • ANDROID_KEY_ALIAS
    • ANDROID_KEY_PASSWORD

Local Toolchain

The helper scripts honor the standard toolchain environment variables:

  • DOTNET_ROOT or dotnet on PATH
  • JAVA_HOME
  • ANDROID_HOME or ANDROID_SDK_ROOT

On Apple Silicon macOS, the scripts also detect a Homebrew JDK 21 install and the standard Android SDK location.

./scripts/validate-android.sh

Build AAB

For local packaging validation without a Play upload key:

./scripts/publish-android-release.sh

For a Play-upload-signed bundle:

export ANDROID_KEYSTORE_PATH=/secure/path/agentqi-upload.jks
export ANDROID_KEYSTORE_PASSWORD=...
export ANDROID_KEY_ALIAS=...
export ANDROID_KEY_PASSWORD=...

./scripts/publish-android-release.sh

The GitHub Actions release workflow expects ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, and ANDROID_KEY_PASSWORD. It decodes the keystore into the runner temp directory and never commits signing material.

Release Checklist

  • Increment ApplicationDisplayVersion and ApplicationVersion in src/AgentQi.Mobile/AgentQi.Mobile.csproj.
  • Run ./scripts/validate-android.sh.
  • Run ./scripts/publish-android-release.sh with the Play upload keystore variables set.
  • Verify the AAB signature and metadata.
  • Upload store assets from docs/store-assets and use docs/store-assets/manifest.json for alt text.
  • Install the release build on at least one physical Android device.
  • Pair a real HTTPS OpenClaw gateway.
  • Verify approve, deny, chat send, sessions, runtime events, channels, providers, and posture.
  • Confirm privacy policy URL is live before Play Console submission.
  • Complete Data Safety using docs/DATA_SAFETY.md.
  • Confirm the in-app privacy text and public privacy-policy URL match the final Data Safety answers.
  • If publishing from a personal developer account created after November 13, 2023, complete a closed test with at least 12 continuously opted-in testers for 14 days, then apply for production access.
  • Complete any Play Console device-verification task for a new personal developer account.

Remaining External Release Items

  • Back up the generated Google Play upload keystore and credentials outside the repository.
  • Publish the privacy policy URL.
  • Complete Play Console app access, content rating, target audience, and Data Safety forms.
  • Provide review instructions explaining that demo mode is available without a gateway account.
  • Complete the closed-testing and production-access requirement if it applies to the developer account.
  • Run final physical-device smoke testing against the production OpenClaw gateway.
  • Replace generated store screenshots with device-captured screenshots when a device or emulator is available.