GooglePlay 强推的 Appbundle 究竟是什么?aab?不优化代码直接减少安装包大小 (1)
这是我参与更文挑战的第 6 天,活动详情查看: 更文挑战
Android App Bundle
介绍
Android App Bundle 是一种发布格式,其中包含您应用的所有经过编译的代码和资源,它会将 APK 生成及签名交由 Google Play 来完成,目前国内还是的应用市场是不支持的。
Google Play 会使用您的 App Bundle 针对每种设备配置生成并提供经过优化的 APK,因此只会下载特定设备所需的代码和资源来运行您的应用。您不必再构建、签署和管理多个 APK 来优化对不同设备的支持,而用户也可以获得更小且更优化的下载文件包。
对于大多数应用项目而言,构建 App Bundle 以支持提供经过优化的 APK 并不费力。例如,如果您已经按照既定惯例组织管理应用的代码和资源,只需使用 Android Studio 或使用命令行来构建已签名的 Android App Bundle,并将它们上传到 Google Play。然后,就能提供经过优化的 APK,自动获享其带来的优势了
GooglePaly 上架新应用限制
重要提示:从 2021 年 8 月起,新应用需要使用 Android App Bundle 才能在 Google Play 中发布。现在,Play Feature Delivery 或 Play Asset Delivery 支持大小超过 150 MB 的新应用。
原理
Android Studio 中构建一个应用束 (app bundle),就可以将应用所需的全部内容 (适用于所有设备) 都涵盖在内:所有语言、所有设备屏幕大小、所有硬件架构。接着,在用户下载您的应用时,Google Play 的新动态交付只会传输适用于用户设备的代码和资源。人们在 Play Store 上看到的安装包体积更小,下载速度也越快,同时也节省了设备存储空间
![](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7c4058e3482d4c3d96f29934ad80cf15~tplv-k3u1fbpfcp
-watermark.image)
(左)旧版 APK 交付样例 - 将全部资源都交付至设备;
(右) 动态交付样例 - 只向设备交付必要资源;
Android App Bundle 支持模块化,通过 Dynamic Delivery with split APKs,将一个 apk 拆分成多个 apk,按需加载(包括加载 C/C++ libraries),这样开发者可以随时按需交付功能,而不是仅限在安装过程中。
Base Apk
首次安装的 apk,公共代码和资源,所以其他的模块都基于 Base Apk
Configuration APKs
native libraries 和适配当前手机屏幕分辨率的资源
Dynamic feature APKs
不需要在首次安装就加载的模块
引用到 APP 中
默认情况下,在构建应用程序包时,它支持为每组语言资源,屏幕密度资源和 ABI 库生成配置 APK。使用 android.bundle 基本模块 build.gradle 文件中的块 ,如下所示,您可以禁用对一种或多种配置 APK 的支持:
android {...
............// Instead, use the bundle block to control which types of configuration APKs// you want your app bundle to support.bundle {
评论