Play 应用签名把"签名"这件事拆成了两把钥匙:一把在你手里,一把在 Google 手里。到 2026 年又多了第三把——新的混合签名里的后量子密钥——这也是为什么你在 Google Maps、OAuth、Facebook 登录里登记的指纹不再只是一个值。下面是 Google Play 控制台官方文档给出的完整密钥模型、逐字点击路径,以及实操中最要紧的两个动作:签名密钥年度升级与上传密钥重置。
今天要解决的问题:搞清楚哪把钥匙是谁的、各自怎么恢复;给新应用或已有应用配置 Play 应用签名;把正确的指纹(最多三组)登记到第三方 API;在需要时升级签名密钥;以及在上传密钥丢失后完成重置,而不丢应用、不丢上架状态。
两把钥匙,量子就绪后变成三把
根据 Use Play App Signing(官方帮助页),启用 Play 应用签名后,每个应用都要面对几把彼此独立的密钥,各自的所有者、格式与恢复规则都不同。
- 上传密钥(Upload key)——你的。格式:Java 密钥库(
.jks或.keystore);要求:RSA 2048 位及以上。你用它给上传到 Play 控制台的应用包签名,Google 用它验证你的身份。万一泄露或丢失,Google 可以帮你重置——这正是拆分密钥的意义。 - 应用签名密钥(App signing key)——Google Play 持有。格式:公钥证书(
.der或.pem)。Google 生成的密钥为 RSA 4096 位;你自己提供的自定义密钥必须为 RSA 2048 位及以上。Google 用这把密钥给最终分发到用户设备上的 APK 签名。如果不启用 Play 应用签名、自己保管这把密钥又弄丢了,它无法重置。 - 量子就绪密钥(Quantum-ready)——Google Play 持有,为 Android 17 新增。混合签名把一把经典 RSA 4096 位密钥与一把后量子 ML-DSA-65 密钥配对。Google 会为混合签名新生成一把经典密钥,与它给 Android 17 以下设备使用的经典密钥不同,于是同一个应用最终使用三把互不相同的密钥。Android 17 及以上用 APK 签名方案 v3.2 校验:该混合块中恰好包含两个签名者;更老的 Android 版本仍用经典签名块校验。
出于安全考虑,上传密钥与应用签名密钥应当是两把不同的密钥。另外,Google 用应用签名密钥签名时会通过 apksigner 在清单里写入两个戳记——com.android.stamp.source 与 com.android.stamp.type——以保证 APK 可追溯到原始签名者。
新应用:量子就绪签名已是默认
- 创建应用。它会自动启用 Google 生成密钥的量子就绪混合签名;同时 Google 还会再生成一把独立的经典密钥,用于 Android 16 及以下设备可识别的签名块。
- 创建上传密钥。在 Android Studio 里生成密钥库,或用命令行 Java
keytool工具生成。 - 上传应用包(AAB)。上传时即自动登记,没有单独的申请步骤。
- 可选:改用自己管理的签名密钥。路径为 Protected with Play → Play Store distribution → Go to Play app signing,点击 Change the app signing key。前提是开放式测试轨道或正式轨道尚未有版本发布;你可以选择复用同一开发者账号下另一个应用的应用签名密钥,或者按指引提供自己的密钥副本。
已有应用:通过 PEPK 工具迁移
如果你目前仍自己签名并上传 APK,可以迁移到 Play 应用签名,从而使用应用包(AAB)以及随之而来的各项 Play 能力。
- 在 Play 控制台进入 Protected with Play → Play Store distribution → Go to Play app signing,若尚未接受服务条款则先接受。
- 转移原始密钥的副本。下载 PEPK 工具,按统一的分步指引,把现有的应用签名密钥从任意代码库加密上传。
- 创建新的上传密钥(推荐)。在 Android Studio 生成新密钥,并在 Play 控制台登记其证书。
把最多三组指纹登记到你的 API 服务商
Maps、OAuth、Facebook 登录等服务是通过应用签名密钥的指纹来认证你的应用的。由于最终 APK 由 Google 签名,你必须把 Google 持有的应用签名密钥指纹登记过去;只登记本地上传密钥,是迁移后最常见的"接口突然失效"原因。
- 进入 Protected with Play → Play Store distribution → Go to Play app signing。
- 滚动到 App signing key 区域,复制所需的 SHA-1 或 SHA-256 指纹。
- 如果应用启用了量子就绪混合签名,需要复制三把密钥的指纹并逐一登记:新经典密钥、新 PQC 密钥,以及供旧设备使用的经典密钥。
- 把这些指纹粘贴到各家服务商的控制台(例如 Google Cloud Console)。若使用 Android App Links,同步更新
assetlinks.json。
升级签名密钥——每年可申请,按需使用
当应用签名密钥泄露,或你希望使用密码学强度更高的密钥时,可以申请年度密钥升级。升级后的密钥适用于 Android 17(API 37)及以上的所有安装,各版本的强制方式并不相同:
- Android 17(API 37)及以上——平台严格强制使用升级后的量子就绪混合密钥(APK 签名方案 v3.2)。
- Android 13 至 16(API 33–36)——平台严格强制使用你最新的经典密钥(APK 签名方案 v3.1)。
- Android 7 至 12(API 24–32)——平台本身不强制升级后的密钥,仍识别最新的经典密钥;Google Play 保护机制会额外校验应用更新是否用你最新的经典密钥签名(用户关闭该功能时除外)。
共享数据的注意事项:由于 API 32 及以下不强制升级密钥,如果你用同一把密钥给多个应用共享数据,这些老版本在自定义权限共享等特性上只会识别旧密钥。
升级步骤:
- 进入 Protected with Play → Play Store distribution → Go to Play app signing。
- 在 App signing key 区域点击 Upgrade key。
- 选择升级路径:让 Google Play 生成新的应用签名密钥(推荐)、复用同一开发者账号下另一个应用的应用签名密钥,或提供自己的密钥副本。
- 点击 Save。
- 把新指纹登记到各家 API 服务商——使用量子就绪签名时是两把新密钥:新经典密钥与新 PQC 密钥。
上传密钥丢失后如何重置
上传密钥丢失或怀疑泄露,并不会把你锁在应用之外。
- 在 Android Studio 创建新的上传密钥。
- 把证书导出为 PEM 格式:
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
- 在 Play 控制台进入 Protected with Play → Play Store protection → Manage Play app signing。
- 在 Upload key certificate 区域点击 Request upload key reset,填写重置原因,上传
upload_certificate.pem文件后点击 Request。
账号或应用易手时,这些配要注意
应用签名密钥由 Google 持有并随应用走,所以交接时真正要处理的是上传密钥库,以及那些信任你指纹的第三方服务。
- 把上传密钥库(
.jks)连同别名与密码一起交接;拿不到就准备好接收方走一次上传密钥重置。 - 任何升级或重置之后,逐一复查依赖指纹的集成:按 SHA-1 限制的 Maps API 密钥、Facebook 登录、OAuth 客户端,以及 App Links 用的
assetlinks.json。这些集成是"静默失败",不会报错提醒。 - 如果交接清单里还只写着一组 SHA-1,那已经过时了:量子就绪签名下服务商看到的是三组指纹。
本站另有两篇相关教程:Google Play 账号与应用转让清单,以及 Play 控制台访问权限管理教程。
在 Google Play 之外分发,以及验证用户真正拿到什么
- 多商店同一把密钥:可以先让 Google 生成应用签名密钥,再从 Play 控制台或 Play Developer API 下载已签名的通用 APK,用于其他应用商店分发——路径为 Test & release → Latest releases and bundles,选中应用包后打开 Downloads 标签页。另一种做法是自己生成应用签名密钥,在配置 Play 应用签名时把副本转交给 Google。
- 测试真实产物:用 内部应用共享(Internal App Sharing)测试 Play 实际下发的版本,或从应用包浏览器下载特定机型的 APK,用
adb install-multiple *.apk在本地安装验证。 - APK 签名方案 v4 会为符合条件的应用自动启用,以支持 Android 11 及以上设备的优化分发,无需手动操作;但使用量子就绪混合签名的应用除外,因为 v4 暂不兼容。
- 保护控制台访问:为账号下所有用户强制开启两步验证。密钥库丢了可以重置,账号丢了就没得救。
上架前自检清单
- 上传密钥库有构建机之外的备份,别名与密码已记录在密码管理器中。
- 上传密钥与应用签名密钥是两把不同的密钥。
- 应用已启用 Play 应用签名(新应用在上传应用包时自动登记)。
- 已把 Play 控制台里的全部应用签名密钥指纹登记到每一家 API 服务商——使用混合签名时是三把密钥。
- 若使用 App Links,
assetlinks.json已同步更新这些指纹。 - 若打算使用自己的应用签名密钥,需在版本进入开放式测试或正式轨道之前完成密钥变更。
- 升级或重置之后,已在真机上重新登记指纹并复测相关集成。
- 已为所有 Play 控制台用户强制开启两步验证。
一句话版本
你用上传密钥签名,Google 用应用签名密钥签名,Android 17 又把后量子密钥加了进来——所以请备份好上传密钥库、把每一组应用签名密钥指纹都登记到 API 服务商、需要更强密钥时走年度升级路径,上传密钥丢了就在 Play 控制台提交重置。