Google Play 上的每一个应用都会被签名两次:一次由你在上传前完成,另一次由 Google 在文件送达用户设备前完成。第二次签名所用的那个密钥——应用签名密钥——是整个应用里唯一无法通过重新上传安装包来替换的东西;而到了 2026 年,它的大部分已经托管在 Google 自己的密钥基础设施里。本文讲清楚 Play 应用签名到底做了什么、三类密钥的分工、新应用与存量应用分别怎么接入、哪些指纹必须注册到 API 服务商、上传密钥丢失后的重置流程,以及应用签名密钥升级在不同 Android 版本上的强制执行规则。


为什么签名密钥比账号本身更值钱

开发者账号可以改名、可以重新验证、可以在不同主体之间转让、也可以从个人升级为企业。签名密钥不行。Android 判断一次更新是否合法,靠的是比对安装包与已安装版本是否由同一个密钥签名——一旦这条链断了,你唯一能做的事就是换一个包名重新发布一个"新应用",代价是安装量、评分和历史全部归零。

这正是 Play 应用签名存在的理由。自 2021 年 8 月起,Google Play 上的新应用就被要求使用它,如今它已是默认路径:由 Google 保管为分发 APK 签名的那个密钥,因此一台丢失的电脑、一个被盗的 keystore、一名离职的开发者,都不再能终结一个应用的生命周期。你手里保留的、也是大多数人俗称"那个 keystore"的东西,其实是上传密钥,而它是可以重置的


三类密钥,三种完全不同的职责

Play 官方文档按"谁持有"和"用来签什么"把密钥分得很清楚。把这张映射关系搞对,既能避免认证故障(给 API 注册了错误的指纹),也能避免无谓的恐慌(以为 keystore 丢了就完蛋)。

Google 在该设计上的原话:出于最大安全性考虑,上传密钥与应用签名密钥应当是两把不同的密钥。

Google 签名时还会往清单文件里写入 com.android.stamp.sourcecom.android.stamp.type 两个标记,让分发出去的 APK 可追溯到原始签名者。应用签名页面上的任何操作都需要账号具备 admin 权限——这也意味着掌握 admin 的人实际控制着这个应用的未来,而不只是它的某个设置项。


接入之后能拿到什么

Play 应用签名不只是密钥托管。让 Google 为你的应用包生成并签名优化后的 APK,才解锁了自动防护(automatic protection)与基于 Gemini 模型的自动字符串翻译;游戏类应用还能额外获得 Play Games Sidekick、边下边玩(Play-as-you-download)以及付费游戏免费试玩等服务。自行在 Play 应用签名之外管理密钥的应用,拿不到这些能力。


新应用如何接入

  1. 创建应用。新建的应用会自动以 Google 生成的密钥接入抗量子混合签名;Google 同时会生成一把独立的经典密钥,用于 Android 16 及以下可识别的签名块。
  2. 生成上传密钥。用 Android Studio 或命令行 keytool 生成 keystore,用来给发布版应用包签名。这个文件和它的密码,请放在两年后你仍然找得到的地方。
  3. 上传应用包。创建发布版本并上传 .aab,自动接入即告完成。
  4. (可选)更换应用签名密钥。希望自己掌控密钥的进阶开发者,可以在任何版本发布到开放测试或正式版轨道之前更换:进入 Protected with Play > Play Store distribution > Go to Play app signing,点击 Change the app signing key。你可以选择复用同一开发者账号下另一个应用的签名密钥,或按说明提供自有应用签名密钥的副本。

存量应用如何迁移

如果你目前仍自己管理密钥、上传 APK,可以升级到 Play 应用签名,从而获得应用包格式与其余 Play 增强能力:

  1. 在 Play 控制台进入 Protected with Play > Play Store distribution > Go to Play app signing
  2. 如尚未接受,先接受服务条款。
  3. 迁移原始签名密钥的副本。下载 PEPK 工具,按 Google 的统一分步说明,把现有应用签名密钥从任意代码仓库加密上传。这一步是保住已安装用户更新通道的关键。
  4. 生成新的上传密钥(推荐)。在 Android Studio 生成一把新密钥,并在控制台登记其证书,这样日常上传使用的密钥就不再是给用户签名的那把密钥。

把正确的指纹注册到 API 服务商

这一步是接入后最容易出事的地方。Google Maps、OAuth、Facebook 登录等服务,都是通过应用签名密钥的指纹来认证你的应用。由于最终 APK 现在由 Google 签名,到达用户手里的指纹是 Google 持有的那一把——所以你必须把 Google 持有的应用签名密钥指纹注册到各个服务商,而不只是本地上传密钥的指纹。


上传密钥丢失或泄露时怎么办

上传密钥丢失并不会把你锁在自己的应用之外,官方恢复流程是标准化的:

  1. 在 Android Studio 中生成一把新的上传密钥。
  2. 把证书导出为 PEM 格式:
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  1. 在 Play 控制台进入 Protected with Play > Play Store protection > Manage Play app signing
  2. Upload key certificate 区块点击 Request upload key reset
  3. 填写重置原因,上传 upload_certificate.pem 文件,点击 Request

在重置处理完成之前,你无法上传新的发布版本,所以要在截止日期之前就把恢复路径准备好,而不是在截止日期之后。请记住这种不对称性:上传密钥可以重置,应用签名密钥并不是你想换就能让 Google 立刻替换的东西。


应用签名密钥的升级

如果应用签名密钥被泄露,或你需要更强的密码学强度,Play 支持每年一次的密钥升级,作用于 Android 17(API 级别 37)及以上的安装。强制执行的强度按系统版本有所不同:

有一个后果很容易被忽略:正因为在 Android 12 及以下平台不强制升级后的密钥,那些在多个应用之间共用同一把签名密钥以共享数据的应用,在这些旧版本上只会认可旧密钥,用于自定义权限共享之类的功能。

升级操作路径:进入 Protected with Play > Play Store distribution > Go to Play app signing,在 App signing key 区块点击 Upgrade key,选择升级路径——让 Google Play 生成新的应用签名密钥(推荐)、复用同一开发者账号下另一个应用的签名密钥、或提供自有密钥副本——然后点击 Save。随后把新指纹注册到 API 服务商;如果使用抗量子混合签名,那就是两把新密钥:新的经典密钥与新的后量子密钥。


在 Google Play 之外分发

如果你把同一个应用也分发到其他 Android 应用商店,希望全渠道使用同一套签名身份,有两种做法:

此外,Play 应用签名会对符合条件的应用自动启用 APK 签名方案 v4,以支持 Android 11 及以上设备的优化分发,无需你做任何操作。例外是使用抗量子混合签名的应用——该方案目前尚不兼容 v4 签名。


真正会付出代价的坑

一句话模型:上传密钥证明"你是谁",永远可以重置;应用签名密钥向每一台已安装设备证明"这个应用是谁",是绝不能丢失或泄露的资产。接入 Play 应用签名,把 Play 持有的指纹注册到应用所有需要认证的地方,并把构建流水线里的 keystore 当作生产基础设施来对待——有备份、有权限管控、只在深思熟虑后才更换。


来源