如要使用 Play 应用签名功能,您必须是账号所有者或拥有发布为正式版,排除设备以及使用 Play 应用签名功能权限的用户,并且需要接受《Play 应用签名服务条款》。
运作方式
如果您使用 Play 应用签名功能,系统会将您的密钥存储在 Google 用来存储自有密钥的安全基础架构中。密钥受 Google 密钥管理服务保护。如果您想详细了解 Google 的基础架构,请参阅 Google Cloud 安全性白皮书。
Android 应用会使用私钥进行签名。为了确保应用更新是可信的,每个私钥都有关联的公钥证书,设备和服务可以使用该公钥证书来验证应用更新是否来自同一来源。只有当更新的签名与所安装应用的签名匹配时,设备才会接受更新。让 Google 来管理您的应用签名密钥,可使验证过程更有安全保障。
注意:对于 2021 年 8 月之前创建的应用,您仍然可以上传 APK 并管理自己的密钥,而不使用 Play 应用签名功能,也不使用 Android App Bundle 来发布应用。不过,在这种情况下,如果您的密钥库丢失或被侵,您将无法更新自己的应用,而必须改用新的软件包名称来发布新应用。对于这些应用,Play 建议使用 Play 应用签名并切换到 app bundle。
设置和管理 Play 应用签名
如果您的应用尚未使用 Play 应用签名,请按照以下说明操作。
第 1 步:创建上传密钥
- 按照这些说明创建上传密钥。
- 使用上传密钥为 app bundle 签名。
第 2 步:准备应用版本
- 按照说明准备和发布版本。
- 选择发布轨道后,“应用完整性”部分会显示您应用的 Play 应用签名状态。
- 如需继续使用 Google 生成的应用签名密钥,请上传您的 app bundle。或者,您也可以选择更改应用签名密钥来访问以下选项:
- 使用 Google 生成的应用签名密钥:有超过 90% 的新应用使用 Google 生成的应用签名密钥。使用 Google 生成的密钥有助于防范密钥丢失或泄露(该密钥无法下载)。如果您选择此选项,则可以从 App bundle 资源管理器下载使用 Google 生成的密钥签名的分发 APK,以供在其他渠道分发;也可为这些渠道的版本使用其他密钥。
- 使用其他应用签名密钥:选择应用签名密钥后,您就可以使用与您的开发者账号中的其他应用相同的密钥,也可以保留应用签名密钥的本地副本,以提高灵活性。例如,您可能已确定使用某个密钥,因为某些设备上已预安装了您的应用。如果将密钥副本保存在 Google 服务器之外,当本地副本发生泄露时,会增加风险。关于如何使用其他密钥,有以下选项:
- 使用与这个开发者账号中的其他应用相同的应用签名密钥
- 从 Java 密钥库导出并上传密钥
- 导出并上传密钥(不使用 Java 密钥库)
- 选择退出 Play 应用签名计划(只有在您计划升级应用签名密钥以加入 Play 应用签名计划时,才应选择此选项)。
- 按照剩下的说明准备和发布版本。
注意:您需要接受《服务条款》并选择加入应用签名计划,才能继续操作。
第 3 步:向 API 提供商注册应用签名密钥
如果您的应用使用任何 API,您通常需要向 API 提供商注册应用签名密钥,以便使用证书的指纹进行身份验证。查找证书的方法如下:
- 打开 Play 管理中心,然后前往 Play 应用签名页面(测试和发布 > 设置 > 应用签名)。
- 滚动到“应用签名密钥证书”部分,然后复制应用签名证书的指纹(MD5、SHA-1 和 SHA-256)。
- 如果 API 提供商需要其他类型的指纹,您也可以下载
.der
格式的原始证书,并通过 API 提供商要求的转换工具转换该证书。
- 如果 API 提供商需要其他类型的指纹,您也可以下载
创建上传密钥并更新密钥库
为了提高安全性,建议您使用新的上传密钥(而不是应用签名密钥)为应用签名。
您可以在选择加入 Play 应用签名计划时创建上传密钥,也可以之后通过访问 Play 应用签名页面(测试和发布 > 设置 > 应用签名)来创建上传密钥。
若要创建上传密钥,请按以下步骤操作:
- 按照 Android 开发者网站上的说明进行操作。将密钥存放在安全的地方。
- 将上传密钥的证书以 PEM 格式导出。替换下方带下划线的参数:
$ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
-
发布过程中如果出现提示,请上传证书以向 Google 注册该证书。
当您使用上传密钥时:
- 上传密钥只会在 Google 中注册,我们会用它来验证应用创建者的身份。
- 在将您上传的任何 APK 发布给用户之前,我们都会从中移除您的签名。
升级应用签名密钥
在某些情况下,您可以请求升级应用签名密钥。
以下是请求升级应用签名密钥的几种原因:
- 您需要加密强度更高的密钥。
- 您的应用签名密钥被盗。
重要提示:只有使用 app bundle 的应用支持密钥升级。
在 Play 管理中心内请求升级密钥之前,请阅读下文的请求升级密钥前的重要注意事项部分。然后,您可以展开下列其他部分,详细了解如何请求升级密钥。
最佳实践
- 如果您还在 Google Play 之外分发应用或未来打算这样做,并想使用同一个签名密钥,则有以下两种选择:
- 让 Google 生成该密钥(推荐),然后从 App bundle 资源管理器下载已签名的通用 APK,以便在 Google Play 之外分发。
- 或者,您也可以先生成要针对所有应用商店使用的应用签名密钥,然后在配置 Play 应用签名时将该密钥的副本传输到 Google。
- 为了保护您的账号,请为可访问 Play 管理中心的账号开启两步验证。
- 在将 app bundle 发布到发布轨道后,您可以访问 App bundle 资源管理器,以获取 Google 通过您的 app bundle 生成的可安装 APK。您可以:
- 复制并分享内部应用分享链接。通过该链接,您只需点按一下,即可测试 Google Play 会通过您的 app bundle 在不同设备上安装什么。
- 下载已签名的通用 APK。这个 APK 使用 Google 持有的应用签名密钥进行了签名,可安装在您的应用支持的任何设备上。
- 下载一个包含适用于特定设备的所有 APK 的 ZIP 归档文件。这些 APK 均使用 Google 持有的应用签名密钥进行了签名。您可以使用
adb install-multiple *.apk
命令在设备上安装该 ZIP 归档文件中的 APK。
- 为了提高安全性,请生成与您的应用签名密钥不同的新上传密钥。
- 如果您使用了任何 Google API,建议您在 Google Cloud 控制台为您的应用注册上传密钥证书和应用签名密钥证书。
- 如果您使用的是 Android App Links,请务必更新网站上相应 Digital Asset Links JSON 文件中的密钥。
上传密钥丢失或被盗
如果您丢失了自己的私有上传密钥或者密钥被盗,则可以创建一个新密钥。然后,您的开发者账号所有者就可以在 Play 管理中心内发起密钥重置流程。
在我们的支持团队注册新的上传密钥后,账号所有者和全局管理员都将在收件箱内收到一条消息和一封包含更多信息的电子邮件。然后,您就可以更新密钥库,并向 API 提供商注册密钥。
账号所有者还可以在 Play 管理中心内取消重置请求。
重要提示:重置上传密钥并不会影响 Google Play 在您向用户提供 APK 之前用于对 APK 重新签名的应用签名密钥。
APK 签名方案 v4
搭载 Android 11 及更高版本的设备支持新的 APK 签名方案 v4。Play 应用签名功能会为符合条件的应用使用 v4 签名,以使这些应用能够使用针对较新机型设备提供的经过优化的分发功能。v4 签名无需开发者采取任何行动,也不会影响用户。