Android release (Google Play)
This guide describes how to generate an Android release artifact from the release branch and upload it to the Google Play Console.
Prerequisites
- Access to Google Play Console for the FoodFight app (at least permissions to create/releases and upload artifacts).
- Android build tooling installed:
- Android Studio (recommended)
- JDK (use the version required by Android Studio / Gradle for your setup)
- Access to the app signing configuration:
- We sign the release bundle with the upload keystore (alias
upload). - You still need the keystore passwords to build a signed release.
- Play App Signing (if enabled) is configured in Google Play Console and is separate from this repo.
- We sign the release bundle with the upload keystore (alias
Important:
- The keystore file (
*.jks) is gitignored inclient/android/.gitignore, so it won’t be present in the repo checkout. client/android/keystore.propertiesreferences the expected filename:upload-keystore.jks.
1) Checkout the release branch
From the repo root:
git checkout release
git pull
2) Install client dependencies
The Capacitor app lives in client/:
cd client
npm install
If you already have client/node_modules from a recent build and nothing dependency-related changed, you can usually skip this step.
3) Build the web app and sync to Android
Build the web assets, then sync to the native project:
npm run build
npx cap sync android
Notes:
First-time Android setup (only if android/ does not exist)
If you haven’t generated the Android platform in this working copy yet:
npx cap add android
npx cap sync android
4) Open Android Studio
npx cap open android
5) Generate a signed Android App Bundle (AAB)
In Android Studio:
- Build → Generate Signed Bundle / APK…
- Select Android App Bundle and click Next
- Select your keystore / upload key configuration
- Choose release build variant
- Click Finish
Where the AAB usually ends up
Most Capacitor/Gradle setups will output an AAB at a path like:
client/android/app/build/outputs/bundle/release/app-release.aab
(Exact names can vary depending on your Gradle configuration.)
Optional: build the AAB from the command line
From client/android:
./gradlew bundleRelease
This should produce the AAB under:
client/android/app/build/outputs/bundle/release/
6) Upload to Google Play Console
- Open Google Play Console → select the FoodFight app
- Go to Release → choose the track you want:
- Internal testing (fastest, best option for testing builds)
- Closed testing
- Open testing
- Production (for google play releases)
- Create new release
- Upload the .aab file
- Add release notes
- Save → Review release → Start rollout (or Submit for review if required)
7) Verify after upload
- Wait for Play Console processing to finish (this can take up to 30 minutes)
- Check for warnings/errors (target SDK, permissions declarations, signing, etc.)
- If doing a staged rollout, monitor crash-free users and key metrics before increasing rollout %
Troubleshooting
- Upload rejected: version code already used
- Increment
versionCodein the Android project and rebuild the bundle.
- Increment
- Signing errors / keystore missing
- Confirm you have the correct keystore and passwords, and that Android Studio is pointing to the right file.
- Capacitor changes not reflected
- Re-run
npm run buildthennpx cap sync android, then rebuild the AAB.
- Re-run