How to deploy Android App Bundle
If you have an app on Google's Play Store you may have seen this warning on Google Play Console.
By using App Bundle (.aab) instead of Application Package (.apk) your Android app could be smaller.
In this specific app the savings are 5.8%, which I admit it's not too impressive, but every byte counts if you're trying to build a lean app, especially if it almost comes for free!
We changed one line in a configuration file and saved 1MB. Win!
If you are using Fastlane to deploy your apps, you may have a Fastfile
with a configuration like this:
# Fastfile
platform :android do
desc "Deploy android app on Play store"
lane :deploy do
# Cordova Fastlane Plugin
cordova(
platform: 'android',
keystore_path: './secret/release-key.keystore',
keystore_alias: 'secretKey',
keystore_password: '*****'
)
supply(apk: ENV['CORDOVA_ANDROID_RELEASE_BUILD_PATH'], track: 'internal', package_name: 'com.xxx.xxx')
end
end
We just need to change the supply
configuration to:
#Fastfile
...
supply(aab: './platforms/android/app/build/outputs/bundle/release/app.aab', track: 'internal', package_name: 'com.xxx.xxx')
...
And a build.json
file in the project's root:
{
"android": {
"release": {
"packageType": "bundle"
}
}
}
That's it! Free savings!
How does it work?
The supply
plugin already supports builds with .aab files, we just need a path to the file. You'll notice in the original code we're using the environment variable CORDOVA_ANDROID_RELEASE_BUILD_PATH
instead of the actual path. That's because cordova
plugin is exposing the path to the .apk but not the .abb.
Don't feel discouraged by the small percentage gains. Your mileage may vary depending how many low-level APIs you are using but smaller bundle file with very little effort is always a good thing.