Google Play has required Android App Bundle (AAB) format for new app submissions since August 2021 and for all app updates since November 2021. Submitting an APK to Google Play for a new app returns an immediate upload error in Play Console — no review occurs, no exception is granted. The build toolchain distinction is subtle: ./gradlew assembleRelease produces an APK; ./gradlew bundleRelease produces an AAB. Fastfile lanes that use gradle(task: 'assemble') are wrong for Play Store submission. The AAB requirement also means developers must use Google Play App Signing — direct APK signing keys can no longer be used for Play distribution.
Low as an operational issue because the error is explicit and immediate on upload, but it blocks every production deployment until corrected in the build pipeline.
Update the Fastfile release lane to produce AAB output:
# fastlane/Fastfile
lane :release do
gradle(
task: 'bundle', # NOT 'assemble'
build_type: 'Release'
)
end
For EAS Build, verify eas.json does not override the default:
"build": {
"production": {
"android": {
"buildType": "app-bundle" // default; explicitly set to avoid accidental APK
}
}
}
For manual builds, run ./gradlew bundleRelease — the output is android/app/build/outputs/bundle/release/app-release.aab. Upload this file to Play Console under Production → Create new release. Enroll in Google Play App Signing if not already done — required for AAB distribution.
app-store-metadata-listing.platform-specific.aab-formatlowandroid/app/build.gradle — look for a bundle { ... } block or a buildTypes configuration that produces .aab output, (b) fastlane/Fastfile — look for gradle(task: "bundle") rather than gradle(task: "assemble") in the lane :release definition, (c) eas.json — EAS Build's Android build profile defaults to AAB format, so look for any explicit "buildType": "apk" in android profiles which would indicate APK output rather than AAB, (d) any CI/CD configuration (.github/workflows/*.yml, bitrise.yml, circle.yml) — look for ./gradlew bundleRelease (correct, produces AAB) vs ./gradlew assembleRelease (produces APK, cannot be submitted to Google Play for new apps). Also check for a google-services.json file in android/app/ — its presence is required for Firebase-based apps but is separate from the AAB requirement. Count all instances found and enumerate each.bundleRelease task, "type": "aab" in EAS, or explicit bundle task in Fastfile); or the project is iOS-only. At least 1 implementation must be confirmed.gradle(task: "assemble") (APK); EAS config has "buildType": "apk" for the production profile; CI workflow runs ./gradlew assembleRelease rather than ./gradlew bundleRelease."fastlane/Fastfile uses gradle(task: 'assemble') in the release lane — this produces an APK, which cannot be submitted to Google Play for new or updated apps".gradle(task: "assemble", ...) to gradle(task: "bundle", ...)"buildType": "apk" from your production Android build profile (default is AAB)./gradlew bundleRelease instead of ./gradlew assembleReleaseandroid/app/build/outputs/bundle/release/app-release.aab — upload this to Play Console