Mobile Development 9 min read

AAB+PAD Conversion and Repackaging: From Android App Bundle to APK and Back

The workflow extracts PAD assets from an AAB, builds a universal APK with bundletool, runs the legacy APK split pipeline, then reassembles a new AAB by merging the split base module with the saved PAD zip, preserving Play Asset Delivery for Google Play compliance.

37 Interactive Technology Team
37 Interactive Technology Team
37 Interactive Technology Team
AAB+PAD Conversion and Repackaging: From Android App Bundle to APK and Back

Background : Since August 2021 Google Play requires the Android App Bundle (AAB) format and enforces a 150 MB size limit. To deliver larger assets without exceeding this limit, developers must use Play Asset Delivery (PAD).

Problem : Existing APK‑centric split pipelines cannot handle AAB+PAD packages. After integrating PAD, only AAB packages can be produced, so the old split process becomes obsolete. The goal is to split an AAB+PAD package, upgrade SDK code, and keep PAD resources.

Basic Idea : Convert the AAB+PAD into an APK, reuse the legacy split logic on the APK, then convert the split result back into an AAB that still contains PAD.

Step 1 – Extract PAD resources : An AAB with PAD has a directory structure similar to:

├── base/
    ├── dex/
    ├── ...
├── base_assets/   ← PAD asset pack (name may vary)
    ├── assets/
    ├── assets.pb
    ├── manifest/
        ├── AndroidManifest.xml
├── BundleConfig.pb
├── META-INF/

The PAD resources are the assets/ folder and the manifest/AndroidManifest.xml inside the asset‑pack folder. Create a zip (e.g., pad.zip ) with the following layout:

// pad.zip (name arbitrary)
├── assets/
├── manifest/
    ├── AndroidManifest.xml

Step 2 – Convert AAB+PAD to APK : Use bundletool to generate a universal APK that contains all code and resources, including PAD.

java -jar bundletool.jar build-apks --mode=universal --bundle=my_app.aab --output=my_app.apks

Unzip my_app.apks to obtain universal.apk , which is the APK version of the original AAB+PAD.

Step 3 – Split the APK : Apply the existing APK split pipeline to universal.apk . The result should be a base.zip that contains the main code **without** PAD resources (the PAD assets have already been merged into the APK and will be removed from base.zip to avoid conflicts).

Step 4 – Rebuild AAB with PAD : Combine the base.zip (code only) and the previously saved pad.zip (PAD assets) to produce a new AAB that retains the PAD module.

java -jar bundletool.jar build-bundle --modules=base.zip,pad.zip --output=my_fixed.aab

Verification : Validate the final AAB and ensure the PAD asset pack is present.

java -jar bundletool.jar validate --bundle=my_fixed.aab

The validation output should list the PAD asset pack (e.g., base_assets ) under “Asset packs”, confirming that the AAB still contains the required PAD resources and can be uploaded to Google Play.

mobile developmentAndroidAPKApp BundleAABBundletoolPlay Asset Delivery
37 Interactive Technology Team
Written by

37 Interactive Technology Team

37 Interactive Technology Center

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.