????对https://blog.csdn.net/qq_39420519文章的学习了解的笔记记录 ????Android App Bundle 是谷歌在今年3月发布的新政策,今年8月份之后TARGET API 30以上(Android 11)的新应用必须使用AAB的格式进行发布,已经发布的应用不强制要求。
???AAB相比APK的好处:
????1、优化结构,针对不同的设备配置和语言进行分发。减小体积。尤其是使用很多so库的应用,可以减少的体积就更多了。因为AAB相当于是apk的集合,你把.aab进行转换之后可以转成.apks文件。 ????2、Play App Signing:通过使用 Google 的安全基础架构来保护您的应用签名密钥免遭丢失,并提供升级到新的、加密强度更高的应用签名密钥的选项 ????3、Play Feature Delivery:超过 10% 的顶级应用使用 app bundle,Play Feature Delivery 使您能够自定义将哪些功能模块交付到哪个设备以及何时交付,以及安装时、有条件和按需交付模式。这一点还没有彻底去了解,看表面的文字意思是可以直接区分不同设备使用App内的不同模块
???AAB拆分
????AAB文件以语言、分辨率、CPU架构、图片尺寸等作为标准拆分成多个.apk文件。验证这一点我们可以首先通过AS提供的从Build->Generate Signed Bundle/APK去build一个新的aab格式文件,签名文件也是使用的jks格式。相比apk的build,会多一个输出密钥用于Google App的二次签名的选项。之后下载官方工具bundletool,通过命令运行符 java -jar E:\bundletool-all-1.8.0.jar build-apks --bundle=G:\Code\Android\PullShowDemo\app\release\app-release.aab --output=G:\Code\Android\PullShowDemo\app\release\app-release.apks INFO: The APKs will be signed with the debug keystore found at ‘C:\Users\yolo.android\debug.keystore’. 生成apks文件,然后我们修改后缀.apks->.zip,解压可以看到里面有很多apk文件,比如根据tl\tr\zh\xhdpi进行区分生成了不同的apk。 我们在安装的真机上的时候,会根据设备自动创建,也可以自行编辑json文件设置,格式如下:
{
"supportedAbis": ["arm64-v8a", "armeabi-v7a"],
"supportedLocales": ["en", "fr"],
"screenDensity": 640,
"sdkVersion": 27
}
???? ???? ???? ???? ???? ????
|