一、前言
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格式的
|