Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generate Apk file from aab file (android app bundle)

Is there any way to generate an apk file from android app Bundle via terminal or using android studio?

like image 506
Jayanth Avatar asked Oct 29 '18 06:10

Jayanth


2 Answers

So far nobody has provided the solution to get the APK from an AAB.

This solution will generate a universal binary as an apk.

  1. Add --mode=universal to your bundletool command (if you need a signed app, use the --ks parameters as required).

    bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks     --mode=universal 
  2. MAIN STEP: Change the output file name from .apks to .zip

  3. Unzip and explore

  4. The file universal.apk is your app

This universal binary will likely be quite big but is a great solution for sending to the QA department or distributing the App anywhere other than the Google Play store.

like image 102
Aaron Small Avatar answered Sep 22 '22 13:09

Aaron Small


By default, the IDE does not use app bundles to deploy your app to a local device for testing

Refer bundletool command

For Debug apk command,

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks 

For 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 

Edit:

I have been using following commands while testing my release build for aab(I hope it helps others too):

  1. Download bundletool jar file from Github Repository (Latest release > Assets > bundletool-all-version.jar file). Rename that file to bundletool.jar

  2. Generate your aab file from Android Studio eg: myapp-release.aab

  3. Run 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 
  4. myapp.apks file will be generated

  5. Make sure your device is connected to your machine

  6. Now run following command to install it on your device:

    java -jar "path/to/bundletool.jar" install-apks --apks=myapp.apks 

Edit 2:

If you need to extract a single .apk file from the .aab file, you can add a extra param --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 a /MyApp/my_app.apk file that can be shared an installed by any device app installer

like image 38
Firoz Memon Avatar answered Sep 22 '22 13:09

Firoz Memon