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.

Important:

  • The keystore file (*.jks) is gitignored in client/android/.gitignore, so it won’t be present in the repo checkout.
  • client/android/keystore.properties references 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:

  1. BuildGenerate Signed Bundle / APK…
  2. Select Android App Bundle and click Next
  3. Select your keystore / upload key configuration
  4. Choose release build variant
  5. 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

  1. Open Google Play Console → select the FoodFight app
  2. 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)
  3. Create new release
  4. Upload the .aab file
  5. Add release notes
  6. 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 versionCode in the Android project and rebuild the bundle.
  • 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 build then npx cap sync android, then rebuild the AAB.