快速了解Android App Bundle

1. 简介

Android App Bundle是一种发布格式,简称aab,其中包含您应用的所有经过编译的代码和资源,它会将
APK 生成及签名交由 Google Play 来完成,aab包大小上限提高到 150MB。
重要提示:从 2021 年 8 月起,新应用需要使用 Android App Bundle 才能在 Google Play 中发布。

2. 特性:apk构建优化

Google Play 会使用您的 App Bundle 针对每种设备配置生成并提供经过优化的 APK ,因此只会下载特定设备所需的代码和资源来运行您的应用。您不必再构建、签署和管理多个 APK 来优化对不同设备的支持,而用户也可以获得更小且更优化的下载文件包。比如:应用为了给用户更好的体验,同一张图片,会有360p,720p,1080p三套资源。若无优化,那么一个传统apk有三套资源占用空间,上传abb后1080p设备会安装只有1080p一套资源的apk。

3. 特性:运行时部署功能模块

Play Feature Delivery 使用了 App Bundle 的多种高级功能,让您可按条件分发或按需下载应用的某些功能,并且分发功能之后也可以选择卸载这些功能

分发方式:

  • 安装时分发:安装应用时下载。

  • 按需分发:允许您的应用根据需要请求和下载功能模块。

  • 根据条件分发:允许您指定特定的用户设备需求(例如硬件特性、区域设置和最低 API 级别),以确定是否在安装应用时下载模块化功能。

  • 免安装分发:用户可以通过 Google Play 商店中的"立即体验"按钮或您创建的网址体验您的应用。

使用参考:
Play Feature Delivery

4. 特性:分发游戏资源

使用 App Bundle 发布应用的游戏开发者可以使用 Play Asset Delivery(PAD)进行游戏资源的分发。PAD提供了灵活的分发模式、自动更新、压缩和增量修补功能,并且可免费使用。使用 PAD,所有资源包均在 Google Play 上托管和提供,因此您无需使用内容分发网络 (CDN) 向玩家提供游戏资源。

PAD使用资源包(Asset Pack),资源包由资源(如纹理、着色器和声音)组成,但不包含可执行代码。

PAD通过 Dynamic Delivery分发,您可以按照以下三种分发模式自定义如何以及何时将各个资源包下载到设备上:安装时分发、快速跟进式分发和按需分发。

4.1 分发模式

  • install-time:安装时分发,资源包在用户安装应用时分发。这些资源包以拆分 APK(APK 集的一部分)的形式提供。您可以在应用启动时立即使用这些资源包。这些资源包会增加 Google Play 商店上列出的应用大小。用户无法修改或删除这些资源包。

  • fast-follow:快速跟进式分发,资源包会在用户安装应用后立即自动下载;用户无需打开应用即可开始 fast-follow 下载。这些资源包会增加 Google Play 商店上列出的应用大小。

  • on-demand:按需分发,资源包会在应用运行时下载。

Google Play 商店会以归档文件(而非拆分 APK)的形式提供配置为 fast-follow 和 on-demand 的资源包,可以理解为独立资源包。这些资源包随后会在应用的内部存储空间中展开。

4.2 资源更新

更新应用时,install-time Asset Pack 会作为基础应用更新的一部分进行更新(开发者无需执行任何操作)。对于 fast-follow 和 on-demand Asset Pack 的应用更新,下载新的资源包,替换旧的资源包。

4.3 下载大小上限

Asset Pack 因具有较高的大小上限而成为大型游戏的理想之选:

  • 每个 fast-follow 和 on-demand Asset Pack 的下载大小上限为 512 MB。

  • 所有 install-time Asset Pack 的总下载大小上限为 1 GB。

  • 一个 Android App Bundle 中的所有 Asset Pack 的总下载大小上限为 2 GB。

  • 一个 Android App Bundle 中最多可以使用 50 个资源包。

使用参考:
Play Asset Delivery

5. 补充

5.1 APK扩展文件obb

Google Play要求上传的apk大小不能超过100MB。如果超过100MB,Google Play 允许附加两个大型扩展文件,每个扩展文件大小上限为2GB,一个为主扩展文件包含主体游戏资源一般不更新,一个为补丁扩展用于为主扩展文件提供小规模的更新。扩展文件可以为任意格式,但是Google Play最终都会作为obb(Opaque Binary Blob)文件,并重新按照后面格式命名:[main|patch].<expansion-version>.<package-name>.obb,例:main.16.com.example.zhazha.obb

在大多数设备上,Google Play 会同时下载扩展文件和APK,因此当用户首次打开您的应用时,所需的一切都已准备就绪。不过在某些情况下,您的应用必须在启动时从 Google Play 下载这些文件。

6. 参考

  1. Android App Bundle简介:https://developer.android.com/guide/app-bundle

  2. APK扩展文件:https://developer.android.com/google/play/expansion-files

  3. Play Feature Delivery 概览:https://developer.android.com/guide/playcore/feature-delivery

  4. Play Asset Delivery 概览:https://developer.android.com/guide/playcore/asset-delivery

推荐阅读更多精彩内容