资源地址
demo:https://github.com/android/app-bundle-samples
bundletool工具:https://developer.android.com/studio/command-line/bundletool
优势:https://developer.android.com/guide/app-bundle/dynamic-delivery#modularize,https://developer.android.com/platform/technology/app-bundle
引导:https://developer.android.com/guide/app-bundle
免安装:https://developer.android.com/topic/google-play-instant/getting-started/instant-enabled-app-bundle
aab优势
- 更高效的管理版本
- 收益于更小的应用 Dynamic Delivery
- 自定义功能分发
- 提升工程速度
- 缩短编译时长
- GP提供了免安装体验
项目结构
app:base模块(属于免安装)
instant:免安装模块
features:动态模块
模块配置
app模块
1 | apply plugin: 'com.android.application' |
1 | <manifest xmlns:dist="http://schemas.android.com/apk/distribution"> |
feature模块和instant模块
1 | apply plugin: 'com.android.dynamic-feature' |
1 | <dist:module |
分发
- 安装时分发
- 按需分发
- 按条件分发
- 免安装分发
分发配置都可以在AndroidManifest.xml中进行配置,上述dist:module中配置
运行
1.android studio
2.命令行
2.1 下载bundletool
2.2 编译aab
1 | ./gradlew :app:bundleDebug |
2.3 转为 apks
–mode=universal 为将所有模块全部转化,不指定时将根据交付策略指定,即dist:delivery分发策略
1 | bundletool build-apks --mode=universal --bundle app/build/outputs/bundle/debug/app-debug.aab --output app/build/outputs/bundle/debug/app-debug.apks |
只包含免安装instant和base
1 | bundletool build-apks --bundle app/build/outputs/bundle/debug/app-debug.aab --output app/build/outputs/bundle/debug/app-debug.apks |
app-debug.apks截图
2.4 安装
1 | bundletool install-apks --apks app/build/outputs/bundle/debug/app-debug.apks |
2.5 获取设备规范
1 | bundletool get-device-spec --output=/tmp/device-spec.json |
2.6 提取apk
1 | bundletool extract-apks --apks=app/build/outputs/bundle/debug/app-debug.apks --output-dir=app/build/outputs/bundle/debug/apks --device-spec=/tmp/device-spec.json |
- universal模式
- 非universal模式,只有base和instant
bundletool是模拟了GP的分发流程
2.7 本地测试模拟
build-apks
1 | bundletool build-apks --local-testing --bundle app/build/outputs/bundle/debug/app-debug.aab --output app/build/outputs/bundle/debug/app-debug.apks |
install-apks
3.GP分发
参考bundletool和分发流程
其他
- aab包中有什么?
aab中包含了base,feature模块的所有资源,我们将aab传到gp市场后,用户下载时,将按分发策略进行下载
- aab构建流程和apk的差异