文章目录

  • 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

android可以使用dubbo吗 androidbundle_按需分发

通过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

BundleTool下载地址

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,validateversion。使用bundletool help可以获取有关命令的详细信息

执行命令会得到xx.apks文件

android可以使用dubbo吗 androidbundle_android_02


它其实就是一个压缩文件,查看文件结构,分为两个目录splitsstandalones

android可以使用dubbo吗 androidbundle_按需分发_03


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

android可以使用dubbo吗 androidbundle_android_04

4. 导出已安装的apk

adb pull /data/app/cn.xxstudy.storage-w0mdHfT4RaJEHuIkyyvATA==/base.apk 输出路径

5. 生成全量APK

bundletool只生成一个包含应用的所有代码和资源的apk,以使该apk与应用支持的所有设备配置兼容,使用universal参数

java -jar bundletool.jar