About Android App Bundles (AABs)
An Android App Bundle (AAB) is a publishing format that includes all your app’s compiled code and resources, and defers APK generation and signing to Indus Appstore.
Indus Appstore uses your app bundle to generate and serve optimized APKs for each device configuration, so only the code and resources that are needed for a specific device are downloaded to run your app. You no longer have to build, sign, and manage multiple APKs to optimize support for different devices, and users get smaller, more-optimized downloads.
Most app projects won’t require much effort to build app bundles that support serving optimized APKs. For example, if you already organize your app’s code and resources according to established conventions, simply build signed Android App Bundles using Android Studio or using the command line, and upload them to the Indus Appstore. Optimized APK serving then becomes an automatic benefit.
The keystore (signing key) would also need to be uploaded along with the AAB file, as it is required to generate the optimized APKs. Since the Indus Appstore does not permanently store the keystore, this would need to be uploaded for each app update or passed along with the Dev Tools API.
Some best practices to reduce compressed APK download sizes:
- Make sure you enable all configuration APKs by setting enableSplit = true for each type of configuration APK. This makes sure that users download only the code and resources they need to run your app on their device.
- Make sure you shrink your app by removing unused code and resources.
- Follow best practices to further reduce app size.
- Consider converting features that are used by only some of your users into feature modules that your app can download later, on demand. Keep in mind, this may require some refactoring of your app, so make sure to first try the other suggestions described above.
Other considerations
The following are the currently known issues when building or serving your app with Android App Bundles. If you experience issues that are not described below, please report a bug.
- Partial installs of sideloaded apps—that is, apps that are not installed using the Indus Appstore and are missing one or more required split APKs—fail on all devices running Android 10 (API level 29) or higher. When downloading your app through the Indus Appstore, we ensure that all required components of the app are installed.
- If you use tools that dynamically modify resource tables, APKs generated from app bundles might behave unexpectedly. So, when building an app bundle, it is recommended that you disable such tools.
- It is currently possible to configure properties in a feature module’s build configuration that conflict with those from the base (or other) modules. For example, you can set buildTypes.release.debuggable = true in the base module and set it to false in a feature module. Such conflicts might cause build and runtime issues. Keep in mind, by default, feature modules inherit some build configurations from the base module. So, make sure you understand which configurations you should keep, and which ones you should omit, in your feature module build configuration.