课程名称:移动端架构师
课程章节:新一代组件化动态化方案App Bundle
课程讲师:CrazyCodeBoy LovelyChubby
课程内容:
尝鲜需要的环境
需要as3.2 canary14+ 以及gralde3.2+才能使用buildBundle工具
现有的项目生成splitAPKs可以自动生成。但是如果要实现某些功能模块动态下发,按需加载就要新建
dynamic feature module
模块, 把独立业务(直播,小游戏)所有资源,逻辑放到该模块中
启用按需加载功能需要我们在base module中集成Play Core Library
用户在Google Play下载一个通过Android App Bundle 方式开发的应用时,只会下载base module对应的apk文件,
Dynamic Feature Module对应的apk文件会在运行时按需下载。
Play Core Library用来在App运行时请求下载Dynamic Feature Module对应的apk
implementation ‘com.google.android.play:core:1.3.4’
Bundletool工具 下载地址:https://github.com/google/bundletool
bundletool工具是一个jar包,通过android studio 的build bundle功能生成aab格式文件,我们必须通过 Google Play才能生成符合我设备的可安装的APK。
Bundletool 是一个用于处理 Android App Bundle 的命令行工具。使用 bundletool,可以构建 Android App Bundle,提取连接的设备配置,生成 APK应用集 (.apks),从 APK应用集文件中提取或安装 APK,以及验证应用。由于 Android App Bundle 仅是一种发布格式,因此 bundletool 用于生成和测试 APK。Google Play 和 IDE 使用的也是相同的工具,而且它是开源的。
生成.apks应用集指令
java -jar bundletool.jar build-apks --bundle=app.aab --output=out.apks
--ks=as_key_store
--ks-pass=pass:123456
--ks-key-alias=key0
bundletool 接受的所有命令:build-bundle,build-apks,extract-apks,get-device-spec,install-apks,validate 和 version。使用 bundletool help 可以获取有关命令的详细信息,例如标识符和其他选项。
查看一下out.apks的文件解结构,分为两个目录splits和standalones
splits目录: 可以看出splits就是对各个moudle的在资源维度,ABI维度和Language维度的拆分。
standalones目录:
因为对于api小于21的android手机是不支持多apk的模式安装的,同时也不支持按需加载,所以对于该类型的手机要生成一个APK,当然也在维度进行了拆分。每个包的大小就是全量包大小
appbundle spilt分包策略,可以通过android.bundle的dsl定义进行配置,主要有三个维度,abi, density和language,配置如下:
android {
bundle {
abi {
enableSplit = true
}
density {
enableSplit = true
}
language {
enableSplit = false
}
}
}
课程收获:
学会了如何在AndroidStudio中使用AppBundle,使用AppBundle打包后的文件在哪里以及文件结构,.pb文件代码什么意思。
期待后面的继续学习