An AAB file is an Android App Bundle, the publishing format Google Play has required for every new app since August 2021. It contains your app’s compiled code and resources in one package, and Google Play uses it to generate a smaller, optimized APK for each device that installs your app. You upload the AAB; your users still receive APKs. That split is the source of almost every question people have about the format, so here are the answers in one place.
AAB vs APK: what the difference actually is
An APK is the file Android devices install and run. An AAB is the file you hand to Google Play so it can build those APKs for you, tailored per device: only the screen densities, CPU architectures, and languages each phone needs. The result is a download that is meaningfully smaller than a one-size-fits-all APK.
| AAB | APK | |
|---|---|---|
| What it is | Publishing format for Google Play | Installable app file |
| Can a phone install it? | No | Yes |
| Required by Google Play? | Yes, for all new apps since August 2021 | Only apps published before then can still update with APKs |
| Sideloading and direct sharing | Not directly | Yes |
| Download size for users | Smaller (Play builds per-device APKs) | Larger (one file carries everything) |
How to get an AAB out of your project
- Android Studio: Build, then Generate Signed App Bundle.
- Flutter:
flutter build appbundle - React Native / Expo:
eas build --platform androidproduces an AAB by default. - AI app builders and Replit: most of them give you a project or an unsigned build, not a ready-to-upload AAB. The step-by-step for that route is in our guide to publishing a Replit app on the Play Store.
The part that blocks most people: signing
Google Play only accepts signed bundles. If you built your app in Android Studio, the Generate Signed App Bundle wizard handles it. If you came from an AI builder, a CI pipeline, or any tool that produced an unsigned AAB, you traditionally needed to install Android Studio and the SDK just to sign one file.
That is the gap our free AAB Signer closes: it signs an Android App Bundle in your browser, generates or accepts a keystore, and gives you a Play-ready file. No Android Studio, no SDK, open source, and free.
Can you convert an AAB to an APK?
Yes, with Google’s own bundletool, which can produce a universal APK from your bundle for local testing:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
That is the right way to test a build on your own device before uploading. It is not a way to distribute your app: for Google Play you upload the AAB itself, and Play handles the rest.
What happens after you upload the AAB
For a new app on a personal developer account, your first upload goes to a closed testing track, because Google requires 12 testers opted in for 14 days before production access. The flow is: build the AAB, sign it, create a closed testing release, and share the opt-in link with your testers. If you do not have 12 testers ready, Testers Community assigns them within 6 hours.
Frequently asked questions
How do I open an AAB file?
You do not open it the way you open a document. An AAB is a container for Google Play. To inspect one, rename it to .zip and extract it, or use bundletool to build installable APKs from it.
Is an AAB required for Google Play?
Yes for every new app since August 2021. Apps that were already on Google Play before then may still push updates as APKs, but new listings must upload bundles.
Why is my AAB rejected as unsigned?
Play requires every uploaded bundle to be signed with a key. Sign it in Android Studio, in your build pipeline, or with the free browser-based AAB Signer, then upload again.
Does the AAB format change the closed testing requirement?
No. The format of your upload and the 12 testers for 14 days requirement are separate things. Every new app from a personal account needs the closed test regardless of how the build was produced.