【发布时间】:2023-11-26 20:45:01
【问题描述】:
我刚刚注册了 Google Play 应用签名计划,该计划需要上传发布密钥库的加密版本,并且有一个用于创建上传密钥库的“可选”步骤 - 可选在引号中,因为我认为它应该是一个必需的步骤,但无论如何,在成功注册后,我现在留下了一个上传证书,我应该用它来签署我未来的应用版本。
到目前为止我所做的事情:我从 Android Studio 创建了一个新的密钥库,设置了商店和别名密码并尝试将 upload_cert.der 导入现有别名 - 失败:
keytool -importcert -file upload_cert.der -alias upload -keystore upload-keystore.jks
keytool 错误:java.lang.Exception:回复中的公钥和密钥库 不匹配
我还尝试在不指定别名(或删除现有别名并创建新别名)或使用不同别名的情况下导入上传证书:
keytool -importcert -file upload_cert.der -keystore upload-keystore.jks
...同样失败:最终创建了一个名为 mykey 的新别名,该别名没有密码保护并且失败并显示以下消息:
原因:java.lang.RuntimeException: com.android.ide.common.signing.KeytoolException: 无法从存储“/path/to/upload-keystore.jks”读取密钥上传:受信任的证书条目不是密码- 保护
...很自然,我尝试为别名设置密码:
keytool -keypasswd -alias upload -keystore upload-keystore.jks
消息也失败了:
keytool 错误:java.lang.Exception: Alias has no key
...现在我的想法已经用完了。
与此同时,我已经向 Google Play 支持发送了一个问题/请求以更新我的上传密钥,但是,我希望有解决这种情况的方法(支持的回复有点慢),因为文档并不以任何方式暗示生成上传密钥库并上传该密钥库的加密私钥是必需的。因此,要么文档模糊/不清楚/错误,要么有一种方法可以使用生成的 upload_cert.der。有什么想法吗?
编辑:
感谢Pierre 提供的答案和评论,我意识到如果您不创建/提供上传密钥,则应使用您现有的原始签名密钥,并带有 upload_cert.der .因此,唯一的要求是通过运行插入上传证书:
keytool -importcert -file upload_cert.der -keystore original-signing-keystore.jks
...您应该能够继续将您的应用程序发布到 Play 商店。
【问题讨论】:
-
我有类似的情况,我不确定为什么,但是当我今天尝试在 Google Play 商店中更新到内部轨道时,我的上传证书改变了它的签名。我有原始密钥库,但上传证书的签名不正确。我现在已经更新并获得了我的本地 upload_cer.der 文件,但我只能将它作为trustedCertEntry 添加到我的密钥库中。当我尝试上传到 Playstore 时,它说使用了无效的上传签名。根据您的编辑,这是一个类似的问题吗?不应该已经接受了,因为它与我的密钥库和新的 .der 一起出现了吗?
标签: android google-play keystore android-app-signing