Is there a way to generate an APK file from an Android Application Bundle (AAB) via Terminal or using Android Studio?
By default, the IDE does not use app bundles to deploy your app to a local device for testing
Refer to the bundletool command.
For the debug APK command,
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
For the release APK command,
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd
I have been using the following commands while testing my release build for AAB:
Download the bundletool
JAR file from the GitHub repository (Latest release* → Assets → bundletool-all-version.jar file). Rename that file to bundletool.jar
Generate your AAB file from Android Studio, e.g.: myapp-release.aab
Run the following command:
java -jar "path/to/bundletool.jar" build-apks --bundle=myapp-release.aab --output=myapp.apks --ks="/path/to/myapp-release.keystore" --ks-pass=pass:myapp-keystore-pass --ks-key-alias=myapp-alias --key-pass=pass:myapp-alias-pass
myapp.apks
file will be generated
Make sure your device is connected to your machine
Now run the following command to install it on your device:
java -jar "path/to/bundletool.jar" install-apks --apks=myapp.apks
If you need to extract a single .apk
file from the .aab
file, you can add a extra parameter, --mode=universal
to the bundletool
command:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks \
--mode=universal \
--ks=/MyApp/keystore.jks \
--ks-pass=file:/MyApp/keystore.pwd \
--ks-key-alias=MyKeyAlias \
--key-pass=file:/MyApp/key.pwd
And execute
unzip -p /MyApp/my_app.apks universal.apk > /MyApp/my_app.apk
This will generate a single /MyApp/my_app.apk file that can be shared an installed by any device app installer.