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 操作步骤
-
登录 Google Play Console,进入目标应用
- 打开浏览器,访问 https://play.google.com/console。
- 从左侧应用列表中选择刚创建的新应用。
-
导航至“发布” > “设置” > “应用完整性”
- 在左侧菜单中依次展开“发布” → “设置” → 点击“应用完整性”。
- 页面将加载“应用签名”区域。
-
在“应用签名”卡片中点击“启用 Google Play 签名”
- 如果应用尚未发布,会显示“启用 Google Play 签名”按钮。
- 阅读弹出的说明对话框,确认了解密钥控制权转移的后果。
- 点击“启用”确认。
-
选择签名密钥来源
- 系统提供两种选项(见下表)。
- 选择后填写对应密钥信息,点击“保存”。
选项 适用场景 所需信息 上传开发者签名密钥 开发者已有 .keystore/.jks 并希望 Google 存储该密钥用于后续签名 密钥库文件(.keystore/.jks)、密钥别名、密钥库密码、密钥密码 由 Google 生成新的签名密钥 开发者无现成密钥或希望完全由 Google 管理 无需提供任何密钥文件,Google 自动生成并存储 -
下载并保存加密的备案文件(可选推荐)
- 完成选择后,系统会提供下载“PEPL 加密密钥”的选项,用于未来上传应用时的加密。
- 点击“下载 PEPL 密钥”并妥善保管。
-
确认状态并上传首个版本
- 返回应用完整性页面,“应用签名”区域应显示“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 验收标准
- Play Console 应用完整性页面中,“应用签名”区域状态显示为 “Google Play 签名已启用”。
- 可下载并查看 Play Console 提供的 签名证书指纹(SHA-256),并能与本地备份的证书指纹匹配。
- 成功上传一个签名过的 AAB(或 APK)到发布版本,且版本提交无签名相关错误。
- 从 Play Console 下载已签名的 AAB/APK(通过“下载已签名的 AAB”功能),其签名证书指纹与 Play Console 中显示的指纹一致。
- 保存了至少一份密钥库备份(如果选择上传开发者密钥)或 PEPL 密钥文件(如果下载了)。