Android App Bundle
Android项目中会有针对不同设备的资源文件,比如根据分辨率不同,drawable会分为drawable-ldpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等文件夹;根据系统版本不同,layout会分为layout-v21、layout-v23等文件夹;根据设备ABI不同,libs分为armeabi-v7a、arm64-v8a等文件夹;根据支持的语言不同,values分为values-zh、values-en等文件夹。
以上的种种资源文件,会随着打包生成的apk,全部带入设备中,这就会导致很多设备用不到的资源文件也会进入设备中,造成包大小增大的后果。
Android提供的App Bundle解决了这个问题,利用Google Play的Dynamic Deliver服务,以及Android5.0开始支持的APK拆分功能,实现了APK的按需拆分和按需下载安装。
- 将原来单一的APK,根据功能模块拆分成base-apk以及dynamic feature module-apk,根据资源文件支持的设备类型生成不同的apk如xxhdpi-apk、armeabi_v7a-apk、zh-zpk等;在下载安装时,会根据设备的类型下载相应的apk,功能模块也只会下发base-apk,而feature-dynamic-module-apk动态模块,可以在需要时调用api进行下载。
AAB
在Android Studio工具栏的Build中,除了可选择Build Apk,也可以选择Build Bundle,编译打包完成后&