文章目录
- App Bundle是什么?
- App Bundle优势是什么?
- 通过BundleTool进行测试
- 1. 生成.aab
- 2. 通过BundleTool build-apks进行测试App bundle
- 3. install-apks部署安装
- 4. 导出已安装的apk
- 5. 生成全量APK
App Bundle是什么?
android包在googlePlay 一种新的上传分发格式,以前是apk,现在可以传.aab
通过使用App Bundle可以有效的减少应用包的大小,提升安装成功率并减少卸载量。
它是不能直接安装的,我们可以借助googlePlay完成下载安装,也可以使用BundleTool工具生成符合用户设备的apk并且部署到设备上。
App Bundle优势是什么?
资源选择性加载
把一个app分割成多个apk,但是不用上传多个apk只需上传一个.aab,googlePlay会完全处理好,为用户合理的分发apk
比如:多语言、屏幕、abi等做不同适配的app,使用App Bundle,用户只会收到跟自己设备相关apk比如:中文+720+arm64
通过BundleTool进行测试
1. 生成.aab
Build→Build Bundle(s)/ APK→Build Bundle(s)
Build→Generate Sigend Bundle Apk →Android App Bundle
2. 通过BundleTool build-apks进行测试App bundle
java -jar bundletool.jar build-apks --bundle=app-debug.aab --output=app.apks
INFO: The APKs will be signed with the debug keystore found at
‘C:\Users\DELL.android\debug.keystore’.
默认情况下会使用系统默认的签名,我们也可以自己指定签名信息
java -jar bundletool.jar build-apks --bundle=app-debug.aab --output=app.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
可以获取有关命令的详细信息
执行命令会得到xx.apks
文件
它其实就是一个压缩文件,查看文件结构,分为两个目录splits
、standalones
splits目录:是对各个module的在资源上的纬度,abi纬度和Language纬度的拆分
standalones目录:因为对于api小于21的android手机是不支持多个apk的模式安装的,同时也不支持按需加载,所以对于该类型的手机要生成一个全量包,当然也在纬度进行了拆分,每个包的大小就是一个全量包
appbundle split分包策略可以通android.bundle的dsl定义进行配置,主要分为3个纬度,配置如下:
android{
bundle {
abi {
enableSplit = true
}
density {
enableSplit = true
}
language {
//标识语言不进行分包处理
enableSplit = false
}
}
}
3. install-apks部署安装
java -jar bundletool.jar install-apks --apks=app.apks
The APKs have been extracted in the directory: C:\Users\DELL\AppData\Local\Temp\3560633892030987380
已经将apk部署到我们的设备上了(这里路径不对,应该是设备路径)
我们用过命令查看安装了那些apk
adb shell pm path packageName
4. 导出已安装的apk
adb pull /data/app/cn.xxstudy.storage-w0mdHfT4RaJEHuIkyyvATA==/base.apk 输出路径
5. 生成全量APK
bundletool只生成一个包含应用的所有代码和资源的apk,以使该apk与应用支持的所有设备配置兼容,使用universal
参数
java -jar bundletool.jar