关于 Android App Bundle

Android App Bundle 是一种发布格式,它包含你的应用所有已编译的代码和资源,并将 APK 的生成和签名推迟到 Google Play 进行。

Google Play 使用你的应用包为每种设备配置生成和提供优化的 APK,因此只需下载特定设备所需的代码和资源即可运行你的应用。你无需再构建、签名和管理多个 APK 以优化对不同设备的支持,用户也能获得更小、更优化的下载。

大多数应用项目在构建支持提供优化 APK 的应用包时,不需要付出太多努力。如果你已经按照既定约定组织你的应用代码和资源,并使用 Android Studio 或命令行构建已签名的 Android App Bundle,然后将其上传到 Google Play,那么优化的 APK 分发就会自动成为一项优势。

当你使用应用包格式发布应用时,你还可以选择利用 Play 功能交付,它允许你向应用项目添加功能模块。这些模块包含的功能和资源仅根据你指定的条件包含在你的应用中,或者稍后在运行时通过Play Core 库下载。

使用应用包发布游戏的开发者可以使用 Play 资产交付:Google Play 的游戏资产大规模交付解决方案,为开发者提供灵活的交付方法和高性能。

观看以下视频,了解为何应使用 Android App Bundle 发布应用。

压缩下载大小限制

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

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

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

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

其他注意事项

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

  • 通过旁加载方式安装的应用(即并非通过 Google Play 商店安装且缺少一个或多个所需拆分 APK 的应用)在所有 Google 认证设备以及运行 Android 10 (API 级别 29) 或更高版本的设备上都会安装失败。通过 Google Play 商店下载你的应用时,Google 会确保应用的所有必需组件都已安装。
  • 如果你使用动态修改资源表的工具,则从应用包生成的 APK 可能会出现意外行为。因此,在构建应用包时,建议你禁用此类工具。

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

其他资源

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

博客文章

视频