关于 Android App Bundle

Android App Bundle 是一种发布格式,其中包含您应用的所有编译代码和资源,它将 APK 生成和签名工作交由 Google Play 处理。

Google Play 使用您的 App Bundle 来针对每种设备配置生成并提供经过优化的 APK,因此只会下载运行该应用所需的特定代码和资源。您不再需要为了优化对不同设备的支持而构建、签署和管理多个 APK,用户也能获得体积更小、更优化的下载内容。

大多数应用项目无需费力即可构建支持提供优化 APK 的 App Bundle。如果您已经按照既定规范组织了应用的代码和资源,通过 Android Studio 或使用命令行构建已签名的 Android App Bundle,并将其上传到 Google Play,那么优化后的 APK 分发将自动生效。

当您使用 App Bundle 格式发布应用时,还可以选择利用 Play Feature Delivery,它允许您向应用项目添加功能模块。这些模块包含的功能和资源仅在您指定的条件下才会随应用一起提供,或者稍后在运行时使用 Play Core 库进行下载。

使用 App Bundle 发布应用的游戏开发者可以使用 Play Asset Delivery:这是 Google Play 提供的用于分发大量游戏素材的解决方案,可为开发者提供灵活的分发方式和高性能表现。

请观看以下视频,了解为什么要使用 Android App Bundle 发布应用。

压缩下载大小限制

使用 Android App Bundle 发布应用,有助于用户以尽可能小的下载量安装您的应用,并提高压缩下载大小。也就是说,当用户下载您的应用时,安装应用所需的压缩 APK 总大小(例如,基础 APK + 配置 APK)不得超过 4 GB。任何后续下载(例如按需下载功能模块及其配置 APK)也必须符合此压缩下载大小限制。素材包不计入此大小限制,但它们有其他的大小限制

如果 Play 管理中心发现您的应用或其按需功能包的任何可能下载项超过了最大大小限制,您将收到错误提示。

请注意,Android App Bundle 不支持 APK 扩展文件(*.obb。因此,如果您在发布 App Bundle 时遇到此错误,请使用以下资源之一来减小压缩 APK 的下载大小:

  • 确保您通过为每种类型的配置 APK 设置 enableSplit = true启用所有配置 APK。这能确保用户仅下载在设备上运行应用所需的代码和资源。
  • 确保通过移除未使用的代码和资源来缩减应用体积
  • 遵循最佳实践,进一步减小应用大小
  • 考虑将仅部分用户使用的功能转换为功能模块,以便应用在需要时按需下载。请注意,这可能需要对应用进行一些重构,因此请务必先尝试上述其他建议。

其他注意事项

以下是使用 Android App Bundle 构建或分发应用时已知的问题。如果您遇到了此处未描述的问题,请报告 Bug

  • 侧载应用(即未通过 Google Play 商店安装且缺少一个或多个必要分拆 APK 的应用)的部分安装在所有经过 Google 认证的设备以及运行 Android 10(API 级别 29)或更高版本的设备上会失败。通过 Google Play 商店下载应用时,Google 会确保安装应用的所有必要组件。
  • 如果您使用的工具会动态修改资源表,则从 App Bundle 生成的 APK 可能会出现异常行为。因此,在构建 App Bundle 时,建议禁用此类工具。

  • 功能模块的构建配置中可能存在与基础模块(或其他模块)冲突的属性。例如,您可以在基础模块中设置 buildTypes.release.debuggable = true,而在功能模块中将其设置为 false。此类冲突可能会导致构建和运行时问题。请记住,默认情况下,功能模块会从基础模块继承某些构建配置。因此,请确保您了解在功能模块构建配置中哪些配置应该保留,哪些应该省略。

其他资源

要了解关于 Android App Bundle 的更多信息,请查阅以下资源。

博文

视频