.apk 成为历史!
↓推荐关注↓
来源:开源中国 + CSDN
1、Google 拥抱 AAB,放弃 APK
早在 2018 年 5 月的 Google I/O 大会上,Google 就介绍了 Android App Bundle(AAB)格式,作为其现代化开发的一部分。今年 8 月,AAB 格式将成为全新上架到 Google Play Store 应用的默认格式,已经上架的老应用暂时不会受到影响。
Google 在公告中表示:
为了给更多用户带来这些好处,并专注于能使所有开发者受益的现代化 Android 分发,Google Play 将从 2021 年 8 月开始要求新发布的应用程序以 Android App Bundle 的形式进行分发。这将取代 APK 作为标准发布格式。
借助 AAB,Google Play 会基于用户设备的配置和语言,使下载到手机中的应用占用空间更小。这种优化意味着通过 AAB 分发的应用比传统 APK 格式平均占用空间少 15%。终端用户也能获得更快的安装速度和更多的可支配存储空间。以下是 AAB 格式的一些优势:
Android App Bundle:Google Play 使用 App Bundle 来生成和优化 APK,以便针对不同的设备配置和语言进行分发。这使你的应用程序占用空间更少(平均比 APK 少 15%); Play App Signing:Play App Signing 是 App Bundle 的必要条件,它通过使用 Google 的安全基础设施来保护应用程序签名密钥不会丢失,并提供了一个升级到全新的、加密能力更强的应用程序签名密钥的选项; Play Feature Delivery:Play Feature Delibery 使您能够通过安装时间、条件和按需交付模式,定制将哪些功能模块交付给哪个设备以及何时交付; Play Asset Delivery:通过动态交付大型资产,减少用户的等待时间,同时降低交付成本。使用 Play Asset Delivery 的游戏可以使用纹理压缩格式定位,因此你的用户只得到适合其设备的资产,没有浪费空间或带宽; 未来的改进:很快,Play App Signing 将开始向选定的应用程序推出 APK Signature Scheme v4,使其有可能在较新的设备选择性地访问即将提供的 Android 性能功能;
根据 Google 的数据统计,目前已有超过 100 万个应用程序正在使用 AAB 格式。这囊括了大多数 Play Store 上排名前 1000 的应用和游戏,其中包括 Twitter、Netflix、Gameloft 旗下的游戏、Adobe 和 Duolingo 等。
除了 APK 将被替换为新的 AAB 以外,开发者还需要用 Play Asset 或 Feature Delivery 替换大型扩展文件(OBB)。由于 AAB 支持 Android Instant App(即时应用程序),因此现有的即时应用 ZIP 也将被取代。目前已经上架 Play Store 的应用程序以及管理企业用户的专用应用程序暂时不会受到影响。
2、AAB 的优势
相较于 APK,AAB 自然有其独一无二的优点。
首先便是上文所提到的应用体积缩小。据谷歌官方介绍,使用 AAB 生成优化的 APK 体积平均会比一般的 APK 小 15%,而这一数据会根据应用大小有较大起伏。例如 Airbnb 在从 APK 切换到 AAB 格式后应用大小减少了 22%,而 Netflix 更是减少了 57%。
其次,AAB 的 Play Feature Delivery 功能可自定义将哪些功能模块交付给哪个设备,支持安装时交付、按条件交付和按需交付等三种模式。这也就是将应用的功能拆分开来,以此大幅缩短用户下载应用的时间,其中没用的功能用户可以不下载或等到以后需要时再下载。
还有一个 Play Asset Delivery 功能,以动态方式交付大型资源可以减少用户等待时间,同时缩减交付成本。即使用 Play Asset Delivery 的游戏可通过纹理压缩格式作为交付条件,以便用户只获取适合其设备的资源,避免浪费空间或带宽。
3、对于 AAB 的担忧
虽然从结果看来,以 AAB 格式分发新应用对开发者和用户都有益处,但还是有部分人对此有些担忧。
有人担心从 APK 变为 AAB 格式会太复杂。但谷歌表示:“对于大多数应用而言,构建 AAB 文件来替代 APK 文件仅需要少量工作。”它指出 App Bundle 是一种受主流构建工具支持的开源格式,因此在 Play Core 原生 SDK、Play Core Java SDK 和 Play Core Kotlin SDK 的助力下,无论用户偏好哪种编码环境,都可以轻松开始使用可选的高级 App Bundle 功能。此外,AAB 的要求仅适用于新应用,现有应用及面向特定 Google Play 用户的私人应用目前无需遵从此要求。
有人对与谷歌共享私人签名密钥表示担忧(签名密钥是验证 APK 完整性的重要信息,谷歌从 ABB 中生成优化的 APK,因此签名密钥也将包含在 ABB 中),对此谷歌表示,所有“签名密钥都将存储在谷歌用来存储自己的密钥的同一基础设施上” ,因此开发者的私人签名密钥都会受到严密的安全保护。
还有人担心因为 AAB 不能在 Google Play 以外的地方下载,会对如亚马逊应用商店等第三方应用商店造成很大影响。但据了解谷歌已经开发了一个名为 bundletool 的开源工具,允许开发人员从 AAB 包中创建 APK,因此想在第三方商店中发布 Android 应用程序的开发人员可以手动导出其应用的 APK 版本。
那么对于谷歌的这一决定,你有什么看法吗?
- EOF -
关注「程序员的那些事」加星标,不错过圈内事
点赞和在看就是最大的支持❤️