Format Android App Bundle (AAB) became a mandatory standard for all new applications in Google Play from August 2021, and from November 2026 the requirement extended to updates to existing APKs. This transition raised a lot of questions among developers: why is Google imposing a new format, how does it affect the size of the application, and why do users still download APKs and not AAB?
In practice AAB this is not just a replacement for APK, but a fundamentally different approach to app distribution. Instead of downloading a universal package with code for all devices, the user receives an optimized build for their specific device. This reduces the download size by up to 35% for new applications (according to Google), speeds up installation and reduces the load on servers. But how does it work technically and what does a developer need to do to switch to AAB? Let's take it step by step.
What is an Android App Bundle and how does it differ from APK
File Android App Bundle (.aab) is a published application format that contains all resources and code, but is not ready for installation. Unlike APK (universal package for all devices), AAB is transferred to Google Play Console, where the server automatically generates optimized split-APK for each user device.
Key differences:
- ๐ฆ APK โa ready-to-install file containing code for all architectures (
armeabi-v7a,arm64-v8a,x86), all languages and screen resolutions. It weighs more because it includes data unnecessary for a specific device. - ๐ง AAB โ "source" for Google Play, which is disassembled into parts (split-APK) and assembled for a specific device. The user downloads only what his smartphone needs.
- ๐ฑ Split-APK โthe final files that are installed on the device. Can be divided into
base.apk(main code),config.arm64_v8a.apk(architecture),config.ru.apk(language), etc.
Example: if your application supports 10 languages and 3 processor architectures, then:
- ๐ APK will weigh ~150 MB (all together).
- ๐ AAB after optimization for a device in
arm64with the Russian language - ~50 MB.
โ ๏ธ Attention: From August 2026 Google Play blocks downloading new APKs for applications that have not yet been published. Updates to existing APKs are allowed to be downloaded until November 2026, but then this method will be completely disabled.
How Dynamic Delivery works in AAB
One โโof the key advantages Android App Bundle is dynamic delivery (Dynamic Feature Delivery). This is a mechanism that allows you to download only those parts of the application that the user needs right now, and the rest - upon request or upon first use.
For example, if your application has:
- ๐ฎ Game module (weighs 200 MB),
- ๐ Analytical module (50 MB),
- ๐ Payment module (10 MB),
then during installation the user will receive only the basic functionality, and the remaining features will be loaded:
- ๐น On request (on-demand) - when the user first opens a section (for example, a game).
- ๐น Conditional (conditional) - if the condition is met (for example, a user from a certain country).
- ๐น During installation (install-time) - if the feature is critical (for example, authorization).
This is especially true for games and large applications, where the basic APK can weigh 50 MB, and additional levels or localizations can weigh hundreds of megabytes. The user does not waste traffic on unnecessary data.
| Delivery type | When loaded | Use example | Max. module size |
|---|---|---|---|
| Install-time | When installing the application | Authorization, main UI | Unlimited |
| On-demand | When opening the feature for the first time | Game levels, rarely used functions | 10โ150 MB |
| Conditional | When the condition is met (country, device, etc.) | Local payment systems, regional features | 10โ100 MB |
| Instant | For Google Play Instant (launch without installations) | Demo versions of games, quick viewing | up to 15 MB |
Advantages and disadvantages of Android App Bundle
The transition to AAB gives developers and users several key advantages, but there are also nuances that are worth considering.
Advantages:
- โ Smaller download size โusers receive only the resources they need.
- โ Quick installation โsplit-APKs are optimized for a specific device.
- โ Dynamic features โyou can add modules without updating the entire application.
- โ Security โ Google Play signs the split-APK with its key, which reduces the risk of forgery.
- โ Analytics โ in Play Console you can see which features are popular and which can be removed.
Disadvantages and limitations:
- โ Complexity of testing โyou canโt just install AAB on the device, you need bundletool or Google Play.
- โ Size restrictions โmaximum size of downloaded AABโ 150 MB (for games - 1 GB when used Play Asset Delivery).
- โ Not all stores support โ Amazon Appstore, Huawei AppGallery and others may require an APK.
- โ Issues with obfuscation โ conflicts may arise when generating split-APK with
ProGuardorR8.
โ ๏ธ Attention: If your application is distributed not only through Google Play (for example, through your own website or third-party stores), you will have to support both builds: AAB for Play i APK for others. This increases the load on CI/CD.
How to create and download Android App Bundle: step-by-step guide
Go on AAB requires changes in the project settings. Here is a step-by-step algorithm for Android Studio:
Update Android Studio to the latest version (not lower Arctic Fox 2020.3.1) and the plugin
com.android.tools.build:gradleto 7.0.0+.In file
build.gradle(moduleapp) add:android {bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}Collect the bundle with the command:
./gradlew bundleReleaseThe file will appear in
app/build/outputs/bundle/release/app-release.aab.Download .aab to Google Play Console (section
Production โ App bundles).
Update Android Studio and Gradle|Configure split by languages/architectures|Assemble the bundle using the bundleRelease command|Check the size in the Play Console|Upload to Production-->
If you need to test AAB locally (without uploading to Play Console), use bundletool:
Download bundletool from GitHub.
Generate APK for your device:
java -jar bundletool-all.jar build-apks --bundle=app.aab --output=app.apksInstall via
adb:java -jar bundletool-all.jar install-apks --apks=app.apks
Frequent errors when working with AAB and how to fix them
Even experienced developers encounter problems when switching to Android App Bundle. Here are the most common errors and their solutions:
1. Error "Missing signing config for release build"
๐น Cause: Not configured signingConfig for assembly release.
๐น Solution: Add to build.gradle:
android {signingConfigs {
release {
storeFile file('keystore.jks')
storePassword 'password'
keyAlias 'alias'
keyPassword 'password'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
2. Size limit exceeded (150 MB)
๐น Cause: In AAB unoptimized resources are included (for example, uncompressed textures or video).
๐น Solution:
- ๐ผ๏ธ Compress images using
webpor TinyPNG. - ๐ต For sound use
.ogginstead of.mp3. - ๐ฆ Transfer heavy data to Play Asset Delivery (for games).
3. Dynamic features do not work after installation
๐น Cause: The dependency in AndroidManifest.xml.
๐น Solution: Check that the module is declared as dist:onDemand="true":
<manifest xmlns:android="..." xmlns:dist="http://schemas.android.com/apk/distribution"><dist:module
dist:instant="false"
dist:onDemand="true"
dist:title="@string/feature_title"/>
</manifest>
If after loading AAB in Play Console you see a warning about large sizes, use the report Download Size Report in the App Bundle Explorersection. It will show you which resources are taking up the most space.
How to update an existing app from APK to AAB
If your app is already published as an APK, migrating to Google Play as APK, go to AAB requires caution to avoid losing users. Here is the migration algorithm:
Create a backup copy of the current APK (in case of rollback).
Update the application version to
build.gradle:defaultConfig {versionCode 2
versionName "1.1"
}Collect AAB and upload to Play Console as a new update.
Test in a closed group (use Internal Testing or Closed Track).
Submit for review and wait for approval (may take up to 3 days).
Important: Google Play automatically transfers all user data (ratings, reviews, installations) when changing format However:
- ๐ VersionCode must be higher than the latest APK.
- ๐ Signature must match (use the same
keystore). - ๐ฑ Package name cannot be changed.
โ ๏ธ Attention: If your application uses Native Code (for example,.so-libraries), make sure that AAB includes all the necessary architectures (arm64-v8a,armeabi-v7aetc.). Otherwise, on some devices the application will crash with an errorunsatisfied link error.
Android App Bundle Alternatives: when to use APK
Although AAB has become the standard for Google Playthere are cases when APK remains the only option:
1. Distribution outside Google Play
If you distribute the application through:
- ๐ Your own website
- ๐ช Amazon Appstore,
- ๐ฑ Huawei AppGallery,
- ๐ค APKMirror or other platforms
you will need universal APK (universalApk). It can be generated from AAB using bundletool:
java -jar bundletool-all.jar build-apks --bundle=app.aab --output=app.apks --mode=universal
2. Applications for corporate use
If you are developing enterprise solutions for internal use (for example, for company employees), then:
- ๐ AAB not suitableas they require loading into Google Play.
- ๐ APK is easier to distribute via MDM systems (for example, Intune or MobileIron).
3. Applications with modular architecture (without Dynamic Delivery)
If your application already uses modules (for example, via :feature1, :feature2 in Gradle), but you do not want to switch to Dynamic Feature Modules, then:
- ๐ ๏ธ Itโs easier to assemble multi-flavor APK with the necessary combinations.
- โก AAB will not give any benefitif you do not use split by architecture/language.
If your application is distributed only through Google Play and does not have specific requirements (for example, enterprise software), switching to AAB is mandatory and beneficial. In other cases, you will have to support both assemblies: AAB for Play and APK for other channels.
FAQ: Answers to frequently asked questions about the Android App. Bundle
โ Is it possible to install AAB directly on an Android device?
No, AAB it is not an executable file. To install you need:
- Generate split-APK or universal APK via bundletool.
- Install via
adb install-multiple(for split-APK) oradb install(for universal APK).
Or upload AAB to Google Play Console and download the application from there.
โ Why does my AAB weigh more than the final APK?
File .aab contains all possible resources (for all architectures, languages, screen resolutions), while the final split-APK includes only what a specific device needs. For example:
- ๐ AAB: 200 MB (all languages + all architectures).
- ๐ Split-APK for
arm64+ Russian: 60 MB.
This is normal - Google Play optimizes the size during generation.
โ How to test dynamic features (Dynamic Features) before publishing?
Use internal app sharing in Google Play Console:
- Download AAB to the section
Internal Testing. - Download the test link and install it on the device.
- Check the loading of features via
SplitInstallManager:
SplitInstallManager splitInstallManager = SplitInstallManagerFactory.create(context);splitInstallManager.startInstall(
SplitInstallRequest.newBuilder()
.addModule("dynamic_feature")
.build()
);
โ What to do if users complain about errors after switching to AAB?
The most common problems:
- No architecture support โ Add
ndk.abiFilterstobuild.gradle. - Dynamic files are not loaded modules โ Check your Internet connection and
SplitInstallManager. - The application crashes on older devices โ Make sure that
minSdkVersionis not lower than 21 (AAB requires Android 5.0+).
For diagnostics, use Android Vitals v Play Console.
โ Is it possible to return an APK after switching to AAB?
Technically yes, but:
- ๐ The new APK must have versionCode higherthan the last AAB.
- โ ๏ธ Google Play can block an update if it considers it a โdowngrade.โ
- ๐ Users who installed AAB will not receive an automatic update to the APK (they will have to delete and install again).
It is recommended to stay on AAB unless there are critical reasons to return.