2.4 KiB
2.4 KiB
Play Store Publishing Roadmap
To publish the Flutter app to the Play Store, you need to transition from a "development" state to a "production-ready" state.
1. What has been done
- Application ID: Changed to
de.sharedinbox.mua(verified inbuild.gradle.kts,MainActivity.kt, and integration tests). - Build Logic:
android/app/build.gradle.ktsnow supports:- Local builds: Using
key.properties(ignored by git). - CI builds: Using environment variables (
ANDROID_KEY_ALIAS,ANDROID_KEY_PASSWORD,ANDROID_KEYSTORE_PASSWORD).
- Local builds: Using
- Taskfile: Added
task build-android-bundleto generate the.aabfile. - CI Workflow: Created
.forgejo/workflows/release.ymlwhich triggers on merge tomain.
2. What you need to do next
A. Create the Keystore
Run the helper script I created for you:
./t.sh
Follow the prompts and use a strong password (24-32 chars).
B. Configure Codeberg Secrets
Go to Settings > Actions > Secrets in your Codeberg repo and add:
ANDROID_KEYSTORE_BASE64: The output ofbase64 -w 0 android/app/upload-keystore.jks.ANDROID_KEYSTORE_PASSWORD: Your keystore password.PLAY_STORE_CONFIG_JSON: The JSON key from your Google Play Service Account.
C. First Manual Upload
Google Play requires the very first upload to be done manually through the web console:
- Generate your keystore using
./t.sh. - Run the build locally using temporary environment variables:
export ANDROID_KEYSTORE_PASSWORD=your_password nix develop --command task build-android-bundle - Upload the resulting
.aabfrombuild/app/outputs/bundle/release/app-release.aabto the Play Console (Internal Testing or Production track). - This "locks in" your signing key.
3. Firebase Test Lab
Once you have the Service Account JSON, you can add a task to Taskfile.yml to run automated tests on real devices:
test-lab:
desc: Run integration tests in Firebase Test Lab
cmds:
- gcloud firebase test android run \
--type instrumentation \
--app build/app/outputs/apk/debug/app-debug.apk \
--test build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
--device model=virtuall1,version=30
Recommendation: Complete step A (Keystore) and B (Secrets) first. Once the first manual upload is done, the CI will take over for all future merges to main.