Apk手动打包aab

参考文档:https://developer.android.google.cn/studio/build/building-cmdline#bundletool-build

工具:bundletool.jar apktool.jar android.jar aapt2

工作流程

解包

apktool d xxx.apk -s -o dic
  • 通过apktool工具对apk进行解包操作 可以得到如下目录(这是-o的输出 加上-s之后会将smail将会是dex文件)

编译资源

aapt2 compile apk_source/res -o xxx.zip
  • 这一步 如果是在windows上运行 需要输出zip文件 不然链接资源会报错

  • 这个zip文件之中会有很多的flat文件 全是依据res目录下的资源文件生成

链接资源

aapt2 link --proto-format -o output.apk \
-I ./android.jar \
--manifest ./AndroidManifest.xml \
-R compiled_resources/*.flat \
--auto-add-overlay

复制文件进入apk

.
├── assets
│   ├── ad_loder.json
│   ├── anim_rate_star.json
│   ├── anim_res
│   ├── anim_star_1to4.json
│   ├── animation_loader_1.json
│   ├── animation_new.json
│   ├── arrow.json
│   ├── config.json
│   ├── fonts
│   └── load_spinner.json
├── dex
│   ├── classes.dex
│   └── classes2.dex
├── lib
│   ├── arm64-v8a
│   └── armeabi-v7a
├── manifest
│   └── AndroidManifest.xml
├── res
│   ├── anim
│   ├── anim-v21
│   ├── animator
│   ├── animator-v21
│   ├── color
│   ├── color-v21
│   ├── color-v23
│   ├── drawable
│   ├── drawable-anydpi-v21
│   ├── drawable-ldrtl-mdpi-v4
│   ├── drawable-ldrtl-xxhdpi-v4
│   ├── drawable-mdpi-v4
│   ├── drawable-v21
│   ├── drawable-v23
│   ├── drawable-watch-v20
│   ├── drawable-xhdpi-v4
│   ├── drawable-xxhdpi-v4
│   ├── font
│   ├── interpolator
│   ├── interpolator-v21
│   ├── layout
│   ├── layout-land
│   ├── layout-sw600dp-v13
│   ├── layout-v21
│   ├── layout-v22
│   ├── layout-v26
│   ├── layout-watch-v20
│   ├── menu
│   ├── mipmap-hdpi-v4
│   ├── mipmap-xhdpi-v4
│   ├── mipmap-xxhdpi-v4
│   ├── mipmap-xxxhdpi-v4
│   ├── raw
│   └── xml
├── resources.pb
└── root
    ├── androidsupportmultidexversion.txt
    ├── kotlin
    ├── okhttp3
    └── protolite-well-known-types.properties
  • 目录结构如上所示 dex assets这些在进行解包操作的时候都可以看到

生成压缩包

zip -r base.zip 
  • 记得是进去文件夹 选中全部文件进行压缩

生成aab

ava -jar /mnt/d/CodeSource/buildaab/bin/bundletool.jar build-bundle --modules=base.zip --output=wall.aab

aab转apks

bundletool --export-apks --input=app.aab --sign=test.keystore --pwd=123456

安装apks

bundletool  install-apks --apks=app.apks