问题描述:在打包google play的app bundle时,需要设置一个上传密钥,并且要自己设置密码。这里常见的不可用的情况有两种,一是keystore找不到了,二是忘记了密码。
影响就是上传的app bundle会提示签名不正确,如下图所示:

解决方法:
这取决于你的应用是否启用了 Google Play App Signing (Google Play 应用签名服务)。大多数现代应用(尤其是 2021 年后创建的)都默认启用它。你可以在 Google Play Console 的 Setup > App integrity > App signing 页面检查。
情况1:启用了 Play App Signing(推荐,大多数情况适用)
-
丢失的 keystore 很可能只是上传密钥(upload key),而最终分发给用户的签名密钥(app signing key)由 Google 安全保管。
-
你可以继续更新应用,不会影响现有用户。
-
解决步骤
(2025 年最新流程):
- 生成一个新的上传 keystore:
- 在 Unity 的 Keystore Manager 中创建新 keystore(或用命令行:keytool -genkeypair -v -keystore new-upload.keystore -alias upload -keyalg RSA -keysize 2048 -validity 10000)。
- 备份好新 keystore 和密码!
- 导出新上传密钥的证书(.pem 文件):
- 用命令行:keytool -export -rfc -alias upload -file upload_certificate.pem -keystore new-upload.keystore
- (在 Unity Keystore Manager 中打开新 keystore,也可导出 PEM。)
- 在 Play Console 请求重置上传密钥:
- 登录 Play Console > 选择你的应用 > Setup > App integrity > App signing 标签。
- 滚动到 Upload key certificate 部分,点击 Request upload key reset(请求上传密钥重置)。
- 上传你刚导出的 .pem 证书文件,并提交请求。
- (必须由开发者账户的 owner 或 admin 操作。)
- 等待 Google 支持处理:
- 通常几天内(有时 1-7 天),你会收到邮件确认新密钥已注册。
- 重置后,不会影响 app signing key,用户更新无缝。
- 使用新 keystore 构建并上传:
- 在 Unity Publishing Settings 中加载新 keystore。
- 构建 AAB 文件,上传到 Play Console 新 release。
- 如果涉及 Google 服务(如 Firebase),可能需更新新上传密钥的 SHA-1(但通常用 app signing key 的 SHA-1)。
- 生成一个新的上传 keystore:
-
注意:重置过程安全,不会丢失应用数据或用户。
情况2:没有启用 Play App Signing(旧应用,可能自己管理全部签名)
- keystore 就是唯一的签名密钥。
- 无法更新现有应用:Google Play 会拒绝不同密钥签名的更新(签名不匹配)。
- 唯一办法 :发布一个全新应用(新 package name),然后引导用户迁移(例如提示卸载旧版安装新版,或用数据导出导入)。
- 这很麻烦,会丢失下载量、评价等。强烈建议未来启用 Play App Signing。
预防建议:
- 备份 keystore 到多个安全地方(云存储、加密盘)。
- 强烈推荐所有应用启用 Play App Signing(新应用默认启用)。
- 如果不确定你的情况,先去 Play Console 检查 App signing 页面。
附,在上面创建上传密钥时遇到一个新问题:
问题描述:在mac 终端里运行keytool时提示找不到java sdk。
解决方法:先确认 Java 已安装(keytool 来自 JDK)
macOS Ventura/Sonoma/Sequoia 上推荐安装 Android Studio 自带的 JDK,它最稳定。
-
如果你已经安装了
Android Studio
(Unity Android 构建通常需要它):
- Android Studio 自带一个嵌入式 JDK,通常位于: /Applications/Android Studio.app/Contents/jbr/Contents/Home (新版 Android Studio 用 jbr,老版可能是 jre)
-
如果没有安装 Android Studio,可以单独安装 OpenJDK:
-
推荐用 Homebrew:打开 Terminal,运行
text
brew install openjdk@17然后它会提示你添加 PATH。
-
在安装完成后,添加连接
sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
这样就可以运行上面的keytoo命令了。