Android 打包成AAB格局

一:前言
Google Play要求八月份起新利用须打包为AAB格局,开发者上传打包文件整合成aab格局,依据不同的处理器/分辨率等下载对应的安装包,缩小冗余,所以安装包会减小。
二:Android App Bundle(AAB)
Android App Bundle 是一种公布格局,其中蕴含您利用的所有通过编译的代码和资源,它会将 APK 生成及签名交由 Google Play 来实现。
应用 Android App Bundle 公布利用可帮忙用户以尽可能最小的下载大小装置您的利用,并将压缩下载大小下限进步到 150MB。也就是说,当用户下载您的利用时,装置利用所需的压缩 APK(例如,根本 APK + 配置 APK)的总大小不得超过 150 MB。任何后续下载内容(如按需下载功能模块(及其配置 APK))也必须满足此压缩下载大小限度。Asset Pack 不受此大小限度,但它们有其余大小限度。上传 app bundle 时,如果 Play 管理中心发现您的利用或其按需性能的可能下载大小超过 150MB




从上图能够看出App Bundles文件格式,它蕴含Base Moudle和咱们拆分的Feature Module文件夹,签名文件和其余的配置文件。每个Moudle文件夹内蕴含dex,manifest,res,和一个resources.pb文件。和APK的文件构造根本保持一致。base module和每个Dynamic Feature Module都蕴含各自的代码和资源,它们独特组成了apk文件的内容。
Google Play就是基于对aab文件解决,将App Bundle在多个维度进行拆分,在资源维度,ABI维度和Language维度进行了拆分,你只有按需组装你的Apk而后装置即可。如果你的手机是一个x86,xhdpi的手机,你在google play利用市场下载apk时,gogle play会获取手机的信息,而后依据App Bundle会帮你拼装好一个apk,这个apk的资源只有xhdpi的,而且so库只有x86,其余无关的都会剔除。从而缩小了apk的大小。
动静交付(Google Play Dynamic Delivery)

通过Android App bundle能够基于维度的抉择缩小apk大小,另外Google Play还提供了动静交付性能。Android App Bundle 反对模块化,通过Dynamic Delivery with split APKs,将一个apk拆分成多个apk,按需加载(包含加载C/C++ libraries)。上面是split APK的几种类型:

Base Apk(根本apk):此APK中蕴含了所有其余拆分APK都能够拜访的代码和资源,并提供利用的基本功能。当用户申请下载您的利用时,会首先下载并装置该APK。
Configuration APKs
native libraries 和适配以后手机屏幕分辨率的资源
Dynamic feature APKs (上图中的aab文件中的Car.apk)
每个动静性能 APK 都蕴含您利用中的某项性能的代码和资源,并且您应用动静功能模块对相应性能进行了模块化解决。
我通过Bulid -Build Bunde生成的.aab格局的

结尾:盲人摸象