4. Google Play签名加固的启用操作(新版应用)

本章面向全新上架 Google Play 的应用开发者,详细说明在首次创建应用时启用 Google Play 签名加固的标准操作流程。通过启用该机制,应用签名密钥将由 Google 安全存储并用于后续更新签名,开发者仅需上传原始签名后的 AAB 或 APK,极大降低密钥泄露和丢失风险。

4.1 适用场景

  • 首次在 Google Play Console 创建并上架的全新应用(非从其他市场迁移)。
  • 应用尚未发布任何版本,且未向用户分发过 APK。
  • 开发者希望将应用签名管理委托给 Google,满足后续自动签名与 Play Integrity 集成需求。
  • 计划使用 App Bundle(AAB)格式进行分发,必须启用 Google Play 签名。

4.2 前置条件

条件项说明检查方式
Google Play 开发者账号已注册并缴纳 $25 注册费,账号状态正常登录 play.google.com/console 确认
应用基本信息已创建在 Play Console 中创建了应用条目(名称、包名、分类等)应用列表可见该应用条目
应用已使用自己的签名密钥签名开发者需拥有一个 .keystore 或 .jks 密钥库,并用该签名密钥对 AAB/APK 进行签名执行 jarsigner -verify -verbose -certs your-app.aab 确认签名链完整
PEPL 密钥(可选)如需上传加密应用,需提前生成 PEPL 密钥参考 Play Console 帮助中心

4.3 操作步骤

  1. 登录 Google Play Console,进入目标应用
  2. 导航至“发布” > “设置” > “应用完整性”
    • 在左侧菜单中依次展开“发布” → “设置” → 点击“应用完整性”。
    • 页面将加载“应用签名”区域。
  3. 在“应用签名”卡片中点击“启用 Google Play 签名”
    • 如果应用尚未发布,会显示“启用 Google Play 签名”按钮。
    • 阅读弹出的说明对话框,确认了解密钥控制权转移的后果。
    • 点击“启用”确认。
  4. 选择签名密钥来源
    • 系统提供两种选项(见下表)。
    • 选择后填写对应密钥信息,点击“保存”。
    选项适用场景所需信息
    上传开发者签名密钥开发者已有 .keystore/.jks 并希望 Google 存储该密钥用于后续签名密钥库文件(.keystore/.jks)、密钥别名、密钥库密码、密钥密码
    由 Google 生成新的签名密钥开发者无现成密钥或希望完全由 Google 管理无需提供任何密钥文件,Google 自动生成并存储
  5. 下载并保存加密的备案文件(可选推荐)
    • 完成选择后,系统会提供下载“PEPL 加密密钥”的选项,用于未来上传应用时的加密。
    • 点击“下载 PEPL 密钥”并妥善保管。
  6. 确认状态并上传首个版本
    • 返回应用完整性页面,“应用签名”区域应显示“Google Play 签名已启用”。
    • 随后进入“发布” > “版本” > “创建新版本”,上传已使用开发者签名密钥签名过的 AAB/APK。
💡 提示: 如果选择“上传开发者签名密钥”,请务必在本地备份该密钥库的多个副本(离线存储+密码管理器)。Google 虽然存储该密钥,但密钥丢失后 Google 无法找回,且新版本无法签名更新。

4.3.1 签名密钥上传操作细节

当选择“上传开发者签名密钥”时,需在 Web 表单中填写以下字段(示例值仅供演示):

密钥库文件:      my-release-key.jks
密钥别名:        myapp
密钥库密码:      ********
密钥密码:        ********

上传前建议验证密钥库完整性:

keytool -list -keystore my-release-key.jks -storepass your-store-pass -alias myapp -v

4.4 输入输出物

输入物来源输出物去向
已签名应用包(AAB/APK)开发者本地构建上传至 Play Console 的发布版本Google Play 分发
签名密钥库(.keystore/.jks)开发者生成(或 Google 生成)存储在 Google Cloud KMS 中Play 签名服务
PEPL 加密密钥(可选)Play Console 下载加密后本地文件(.pepk)开发者本地备份
启用确认记录Play Console 操作应用完整性页面状态变更监控和审计

4.5 责任边界

  • 开发者责任:
    • 确保在启用前对应用使用自己的签名密钥进行正确签名。
    • 备份签名密钥库及密码,作为应急恢复的最终手段。
    • 如果选择“上传密钥”,需确保密钥库文件未损坏且密码无误。
  • Google Play 责任:
    • 安全存储开发者上传的签名密钥(或自动生成的密钥)。
    • 在应用每次新版本发布时,使用该密钥重新签名并分发。
    • 提供通过 Play Integrity API 校验签名证书的能力。
  • 边界模糊点:一旦应用发布并启用 Google Play 签名,开发者无法再自行交换签名密钥。如需更换,必须联系 Google 支持并提供证据,流程复杂且可能影响已有用户。

4.6 记录材料

记录项内容保存期限
启用时间戳Play Console 界面中“应用签名”区域的启用日期长期(应用生命周期内)
签名密钥指纹(SHA-256)可在 Play Console 对应页面查看并截图长期
密钥库备份记录存储位置、别名、密码提示(单独存储)长期
PEPL 密钥文件.pepk 文件的哈希值或备份路径长期

4.7 异常处理

⚠️ 警告:以下异常情况可能导致应用上架失败或签名密钥丢失,请务必确认后操作。
异常场景原因处理方案
上传密钥时提示“密钥库格式不受支持”使用了早期 JKS 格式但文件名后缀非 .jks,或使用了 .bks 等其他格式使用 KeyStore Explorer 或 keytool 转换为 PKCS12(.p12)后重试
启用成功后上传 AAB 提示“签名不匹配”更新版本使用了与首次上传不同的签名密钥必须使用与首次启用 Google Play 签名时相同的签名密钥签署新包
密码遗忘/密钥库丢失未备份或密码管理不当联系 Google Play 支持,提交所有权证明,申请迁移(成功率非100%)
“启用 Google Play 签名”按钮灰色不可用应用已发布过版本,或已从其他来源导入仅全新未发布应用可启用;已有版本应用需参考迁移流程

4.8 验收标准

  1. Play Console 应用完整性页面中,“应用签名”区域状态显示为 “Google Play 签名已启用”。
  2. 可下载并查看 Play Console 提供的 签名证书指纹(SHA-256),并能与本地备份的证书指纹匹配。
  3. 成功上传一个签名过的 AAB(或 APK)到发布版本,且版本提交无签名相关错误。
  4. 从 Play Console 下载已签名的 AAB/APK(通过“下载已签名的 AAB”功能),其签名证书指纹与 Play Console 中显示的指纹一致。
  5. 保存了至少一份密钥库备份(如果选择上传开发者密钥)或 PEPL 密钥文件(如果下载了)。
启用 Google Play 签名流程(新版应用) 登录 Play Console 发布 > 设置 > 应用完整性 点击“启用 Google Play 签名” 上传开发者签名密钥 (.keystore/.jks + 别名+密码) 由 Google 生成签名密钥 (无需输入密钥文件) 状态确认 > 上传首个版本 密钥选择后不可 更改(除非联系 Google 支持)