Android App Bundle 常见问题

关于 Android App Bundle

什么是 Android App Bundle (AAB)?

Android App Bundle (AAB) 于 2018 年推出,是一种适用于 Android 的发布格式,受 Google Play 和其他应用商店以及 Android Studio、Bazel、Buck、Cocos Creator、Gradle、Unity 和 Unreal 等构建工具支持。

AAB 与 APK 有何不同?

应用包仅用于发布,无法安装到 Android 设备上。Android 应用软件包 (APK) 是 Android 应用的可安装可执行格式。应用包必须由分发商处理成 APK,才能安装到设备上。

AAB 是只能在 Google Play 上使用的专有格式吗?

不,AAB 并非专有格式。应用包是开源的,因此任何应用商店都可以支持它。Google Play 和一些其他应用商店都支持应用包。

创建 AAB 会阻止我发布到其他应用商店吗?

不,您不会被阻止发布到其他应用商店。在构建应用时,您可以同时构建 AAB 和 APK,具体取决于每个应用商店所需的发布格式。

使用 AAB 需要多少工作量?

对于大多数应用而言,构建 AAB 与构建 APK 所需的工作量相同,因为它只是在构建时选择 AAB 而非 APK。对于某些应用,可能需要进行一些更改才能充分利用 AAB 的优势。

是否有开发者已在使用 AAB?

是的。超过 100 万款应用和游戏正在使用应用包在 Google Play 上发布其正式版本,其中包含了大多数热门应用,代表着数十亿的活跃安装量。如果您使用 Google Play 安装应用,您设备上的许多应用都是以应用包的形式发布的。

AAB 是否会阻止用户“旁加载”应用?

不,AAB 不会阻止用户从任何来源安装 APK。由于 AAB 仅仅是一种发布格式,它们不会改变 Android 平台的工作方式。

如果开发者使用 AAB 分发优化的 APK,这是否意味着分享这些 APK 的用户可能会遇到问题?

在 Android 上,APK 无法直接从一台设备传输到另一台设备的情况一直都存在,无论应用是通过 APK 还是 AAB 发布。具体来说,当 APK 针对某个设备(例如,针对特定芯片架构)进行优化后,如果目标设备与原始设备的属性不匹配,则将这些 APK 直接传输到另一台设备可能会遇到问题。在这种情况下,需要安装适用于目标设备的 APK 或一组 APK。

我可以发布到多个应用商店吗?

是的,无论您是否使用 AAB,都可以发布到多个应用商店。您可以同时在 Google Play 和其他支持 AAB 的应用商店发布 AAB,也可以在不支持 AAB 的其他应用商店或网站发布 APK。

AAB 要求是否适用于发布到代管式 Google Play 的私有应用?

不,发布到代管式 Google Play 的私有应用可以使用 APK 或 AAB 发布。在创建新的私有应用时,如果您想发布自签名私有 APK,可以选择更改应用签名密钥并选择退出 Play 应用签名。

关于 Play 应用签名

什么是 Play 应用签名?

Android 上的每个 APK 都必须使用应用签名密钥进行加密签名才能安装。Android 平台使用该密钥确保所有应用更新与设备上已安装的应用匹配,以便在初始安装后,每个应用更新都来自相同的密钥持有者。这降低了恶意应用更新的风险。于 2017 年推出的 Play 应用签名是 Google Play 的密钥管理服务,用于保护和管理 Play 开发者为其通过 Play 分发的应用所使用的应用签名密钥。此外,Play 应用签名还对 Play 从上传的 AAB 生成的 APK 执行签名操作。新应用必须使用 Play 应用签名才能使用 AAB。

Google 为何推出 Play 应用签名?

多年来,应用签名密钥一直是 Play 开发者面临的挑战。丢失密钥意味着无法再向用户提供应用更新,而密钥泄露则会使用户面临恶意更新的风险。在软件分发中,分发渠道存储和管理其分发软件的密钥是很常见的,因为这可以降低这些风险。Play 应用签名于 2017 年推出,旨在消除丢失 Play 分发密钥的风险,使密钥泄露后能够保护 Play 用户,并让开发者受益于 Google 持续的安全投入。

Google 如何确保 Play 应用签名的安全性?

Google 在与保护 Google 自身密钥相同的行业领先安全基础架构中保护开发者密钥。密钥加密存储在受锁定的专用密钥管理服务器上,并具有严格的 ACL 和防篡改审计跟踪,涵盖所有操作。Google 的云安全操作和最佳实践在线有详细说明

我可以选择 Play 为我的应用使用的应用签名密钥吗?

是的,当您创建新应用时,您可以选择让 Google 为您生成和存储应用签名密钥,也可以选择您自己的应用签名密钥并上传其副本。

我想在 Play 和其他应用商店使用相同的应用签名密钥。这仍然可能吗?

如果您在考虑了应用更新的工作原理后决定在多个应用商店使用相同的签名密钥,那么这仍然是可行的。请记住,这将允许每个应用商店对您的应用执行跨商店应用更新。您有两个选项

  • 您可以在本地生成密钥,并将其副本上传到 Play。这样,当您为其他应用商店构建应用时,就可以使用 Google Play 所使用的相同密钥。
  • 您可以将 Google 生成的密钥用于 Play 应用签名,然后从 Play 管理中心下载使用 Google 生成密钥签名的分发 APK,并将这些 APK 用于在其他应用商店或网站上分发。

对于在 2021 年 8 月之前创建的应用,我可以在不提供应用签名密钥副本的情况下使用 Play 应用签名吗?

是的,Play 应用签名支持对 2021 年 8 月之前创建的应用提供“密钥升级”选项。这允许应用开始使用新的应用签名密钥进行 Play 应用签名。但是,要使用此选项,在执行升级后,您需要在每个版本中上传两项内容:一个应用包和一个使用旧应用签名密钥签名的旧版 APK。Play 将使用您的 AAB 为新安装及其更新生成使用升级密钥签名的 APK;同时,Play 将使用您的旧版 APK 为已安装您的应用的用户提供应用更新。随着时间的推移,旧版安装将迁移到升级后的密钥(例如,当用户更换新的移动设备时)。

有没有办法在 2021 年 8 月之前创建的应用和 2021 年 8 月之后创建的应用中使用相同的应用签名密钥?

通常不建议对多个应用使用相同的应用签名密钥,为每个应用使用唯一的密钥会更安全。但是,如果您需要对多个应用使用相同的应用签名密钥,这是可以的。您可以选择在配置 Play 应用签名时上传现有应用签名密钥的副本。或者,如果您不想共享现有应用签名密钥,可以使用即将推出的“密钥升级”选项,让您在 2021 年 8 月之前创建的应用开始使用 Play 应用签名。这样,您在 2021 年 8 月之前创建的应用和在 2021 年 8 月之后创建的应用都可以使用相同的新密钥。

我能否更改 Play 应用签名使用的应用签名密钥?

是的,应用可以通过在 Play 管理中心请求密钥升级来更改其密钥。

我如何检查 Google Play 是否未对我的代码进行意外更改?

您可以随时从 Google Play 和 Play 管理中心内的应用包资源管理器下载并检查工件。此外,Play Developer API 即将提供在将 APK 提交到发布轨道之前验证 APK 的功能。您还可以使用名为应用包代码透明度的可选功能。借助代码透明度,您和您的最终用户可以要求 Google Play 等应用商店对其分发的代码负责。

应用包的代码透明度如何运作?

代码透明度是一个可选功能,可让您要求分发应用的商店对其分发的代码负责。要使用代码透明度,您需要在构建时在应用中生成一个代表您代码的代码透明度文件(具体来说,它是一个包含您应用代码哈希值的文件)。您使用只有您拥有的私有代码透明度密钥对其进行签名。您无需向 Google 提供您的代码透明度密钥。然后,在设备上,您可以检查已安装的 APK 并验证您签名的代码透明度文件是否仍与 APK 的代码匹配。这为您提供了保证,即使 APK 本身在分发过程中被重新签名,代码透明度验证的代码也未被修改。如果存在不匹配,则表明代码在分发过程中已被更改。代码透明度不取代 APK 签名,也不是 Android 平台的一部分。

在 Google Play 上发布大型应用和游戏

使用 AAB 时,Google Play 应用的大小限制是多少?

从 AAB 生成的基本模块的最大压缩下载大小为 200 MB。也就是说,Google Play 将首先生成基本模块,然后从您的 AAB 中生成任何其他功能模块或素材包。接下来,Google Play 会检查任何单个设备接收到的最大累计总压缩下载大小是否不超过 4 GB。

Google Play 是否支持 AAB 的扩展文件 (OBB)?

不,Google Play 不支持 AAB 的扩展文件。扩展文件 (OBB) 是 Google Play 针对使用 APK 发布大型应用和游戏的旧版解决方案。对于大于 200MB 的 AAB,有 Google 和第三方替代方案。

如何在 Google Play 上发布大于 200MB 的应用或游戏?

使用 AAB 的大型应用和游戏可以利用 Play 分发服务(例如 Play 资源分发或 Play 功能分发)来突破 200MB 的大小限制,或者也可以使用第三方内容分发网络。

Play 资源分发与扩展文件 (OBB) 相比有哪些优势?

在 Google Play 上,APK 需要单独的扩展文件 (OBB) 才能向用户提供额外资源。然而,由于 OBB 未经签名且存储在应用的外部存储中,因此安全性不高。通过 Play 资源分发 (PAD),大于 200MB 的游戏可以通过将整个游戏作为单个应用包发布到 Play 商店来取代 OBB。除了提供更流畅的发布流程和灵活的分发模式外,PAD 还意味着更新所需的设备存储空间更少。因此,它可以提高安装率。最后,由于现在约 80% 的设备都支持 ASTC,PAD 的纹理压缩格式定位功能可让您向支持 ASTC 的设备提供 ASTC。您可以面向最广泛的设备,同时有效利用可用的硬件和设备存储空间。

AAB 带来的 Google Play 分发功能

Play 为使用 AAB 的开发者提供哪些新功能的示例?

像 Google Play 这样的应用商店会将 AAB 处理为可安装的 APK。负责 APK 使得提供新功能和服务成为可能,从而为开发者和用户带来益处。Play 已经提供了此类服务,这些服务已被开发者广泛使用和重视,两个示例是Play 功能分发Play 资源分发

什么是 Play 功能分发?

应用包的特点之一是它们允许将应用分成多个模块,称为“功能模块”。这些模块可以动态地在不同时间分发给用户和设备(不像过去所有内容都必须在安装时作为一个文件分发)。Play 功能分发使您能够自定义哪些功能模块在何时分发到哪些设备,支持安装时、有条件和按需分发模式。这可以帮助您减小应用大小,从而带来更多安装量,并定制您的应用体验。例如,您可以将客户支持等不常用的功能按需分发给需要的用户,而不是在安装时分发,从而减少所有用户的初始安装大小。或者,您可以将完整的应用体验分发给高端设备,同时向数据和设备存储受限的入门级设备分发更小的应用体验,其中包含可选的按需功能。

什么是 Play 资源分发?

Play 资源分发允许游戏开发者通过在最佳时间动态分发大型资源来改善用户体验并减少用户等待时间。使用 Play 资源分发的游戏还可以利用纹理压缩格式定位功能,因此您的用户只会获得适合其设备的资源,从而不浪费空间或带宽。

这些 Play 分发功能在其他应用商店可用吗?

不,Play 功能分发和 Play 资源分发涉及应用和游戏直接与 Google Play 商店交互。这些可选服务是 Play 作为应用商店实现差异化,并为 Play 开发者和用户带来额外价值和实用性的示例。其他使用应用包和 APK 的应用商店则向开发者提供自己的应用商店服务。