Skip to content

Build & publish for Android

Do this once per app (customer, seller, rider). You need a Google Play developer account (one-time fee).

  1. In the app’s android folder:
    Terminal window
    cd apps/customer/android
    keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
  2. Choose a strong password and answer the questions (your name and company are fine).

Create android/key.properties next to the keystore:

apps/customer/android/key.properties
storePassword=your-store-password
keyPassword=your-key-password
keyAlias=upload
storeFile=upload-keystore.jks

storeFile is relative to the android folder (or a full path). The app’s build reads this file for release builds. Without it, release builds are signed with a debug key — fine for testing, rejected by Google Play.

In the app’s pubspec.yaml:

version: 1.0.0+1

1.0.0 is what users see; +1 is the build number. Increase the build number for every upload (1.0.0+2, 1.0.1+3 …) — Google Play refuses a number it has seen.

Terminal window
cd apps/customer
flutter build appbundle --release

The file is build/app/outputs/bundle/release/app-release.aab.

  1. Play Console → Create app: name, default language, App, Free, accept the declarations.
  2. Test and release → Testing → Internal testing → Create new release → upload the .aab. Google offers Play App Signing — accept it (recommended).
  3. Add yourself as a tester, install from the link, and check sign-in, ordering and notifications.
  4. Fill in Grow users → Store presence → Main store listing: description, icon (512×512), feature graphic (1024×500), phone screenshots.
  5. Complete Policy and programs → App content: privacy policy URL (your website’s privacy page), ads, content rating, target audience, Data safety (the apps collect name, phone, email, location and, in the customer app, payment and photos you upload).
  6. Production → Create new release → upload the same or a newer .aab → Review release → Start rollout.
  • Firebase: add the App signing key SHA-1 and SHA-256 (Play Console → Setup → App signing) to your Android app in Firebase, or phone sign-in fails for Play installs (Firebase for the apps).
  • Shared links: use the same App signing SHA-256 for APP_LINKS_ANDROID_SHA256 (Rename & rebrand).
  • Rider app: it uses location while riders are on a job. Google asks for a short video showing why when you declare location permissions — record the rider accepting and delivering an order.