Guide · Android · Play Store

    Signed AAB for Google Play without Android Studio (2026)

    Nathan Claiborne
    Google Play has required the Android App Bundle (.aab) format for new apps since August 2021. This guide shows the fastest way to produce a signed .aab from any GitHub repo — using GitHub Actions and Corenna — without installing Android Studio.

    APK vs AAB — what the Play Store actually wants

    An .apk is the legacy install package; an .aab is a publishing format that Google splits into per-device APKs server-side. The Play Console only accepts .aab for new apps. Keep .apk around for sideloading and internal testing — see building an APK from GitHub.

    Prerequisites

    • A GitHub repo with a Capacitor, Flutter, or React Native project (Expo too: with no android/ folder, the build runs npx expo prebuild itself).
    • An Android keystore. New to keystores? Read the Android keystore guide.
    • Your applicationId matches the package name registered in Play Console.

    Option A — GitHub Actions YAML (the manual path)

    Create .github/workflows/build-aab.yml with a job that runs:

    - uses: actions/checkout@v4
    - uses: actions/setup-java@v4
      with: { distribution: temurin, java-version: '17' }
    - name: Decode keystore
      run: echo "$KEYSTORE_B64" | base64 -d > android/app/release.keystore
    - name: Build release bundle
      working-directory: android
      run: ./gradlew bundleRelease
    - uses: actions/upload-artifact@v4
      with: { name: app-release.aab, path: android/app/build/outputs/bundle/release/app-release.aab }

    Store KEYSTORE_B64, KEYSTORE_PASSWORD, KEY_ALIAS, and KEY_PASSWORD in Settings → Secrets and variables → Actions.

    Option B — Corenna (no YAML)

    1. Connect your repo via the Corenna GitHub App.
    2. Upload or generate a keystore — we encrypt and sync it into Actions Secrets for you.
    3. Pick Build type: AAB and click build.
    4. Download the signed bundle when the run finishes (~5–10 min).

    Uploading to Google Play

    1. In Play Console open your app → Release → Production (or Internal testing).
    2. Click Create new release and upload the .aab.
    3. If Play Signing is enabled (default), Google re-signs per-device APKs — your upload key still matters for future updates, so back it up.
    4. For every update after that first release, you can skip the upload: connect a Google Play service account in Corenna once and it sends each new .aab straight to your internal, closed, open, or production track, with release notes.

    Common errors

    • "Package name has already been used" — change applicationId or claim the existing app.
    • "You uploaded an APK that is signed with a different key" — you swapped keystores; restore the original or contact Play support.
    • Version code already exists — bump versionCode in build.gradle on every upload.
    Keep reading