关于 Android 应用包
什么是 Android 应用包 (AAB)?
Android 应用包 (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,您都可以发布到多个应用商店。您可以在支持 AAB 的 Google Play 和其他应用商店上同时发布 AAB,并在不支持 AAB 的其他应用商店或网站上发布 APK。
AAB 要求是否适用于发布到受管理的 Google Play 的私有应用?
否,发布到受管理的 Google Play 的私有应用可以使用 APK 或 AAB 发布。创建新的私有应用时,您可以选择“**更改应用签名密钥**”并选择退出 Play 应用签名,如果您想发布自签名的私有 APK。
关于 Play 应用签名
什么是 Play 应用签名?
每个 Android 上的 APK 必须使用应用签名密钥进行加密签名才能安装。Android 平台使用密钥来确保任何应用更新与设备上安装的应用匹配,以便在初始安装完成后,每个应用更新都来自相同的密钥持有者。这降低了恶意应用更新的风险。Play 应用签名于 2017 年推出,是 Google 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 开发者 API 很快将提供在您将 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)。扩展文件 (OBB) 是使用 APK 发布大型应用和游戏的 Google Play 专用解决方案。对于大于 200 MB 的 AAB,有 Google 和第三方替代方案。
如何在 Google Play 上发布大于 200 MB 的应用或游戏?
使用 AAB 的大型应用和游戏可以使用 Play 交付服务(例如 Play 资产交付或 Play 功能交付)来超过 200 MB 的大小限制,或者可以使用第三方内容交付网络。
Play 资产交付与扩展文件 (OBB) 相比有哪些优势?
在 Google Play 上,APK 需要单独的扩展文件 (OBB) 来向用户提供额外的资源。但是,由于 OBB 未签名且存储在应用的外部存储中,因此它们并不十分安全。使用 Play 资产交付 (PAD),大于 200 MB 的游戏可以通过将整个游戏作为单个应用捆绑包发布到 Play 商店来替换 OBB。除了提供更流畅的发布流程和灵活的交付模式之外,PAD 还意味着更新需要更少的设备存储空间。因此,它可以提高安装率。最后,由于 ASTC 现在已在约 80% 的设备上得到支持,因此 PAD 的针对特定功能的纹理压缩格式可以让您向支持它的设备提供 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 的其他应用商店向开发者提供他们自己的应用商店服务。