我刚刚加入了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: 别名 没有密钥
...现在我已经没有更多的想法了。
同时,我已向Google Play支持发送了一个问题/请求,以更新我的上传密钥,但我希望能有解决这种情况的方法(支持回复速度有点慢),因为文档并没有以任何方式暗示生成上传密钥库并上传该密钥库的加密私钥是必需的。所以,要么文档模糊/不清晰/错误,要么有一种方法可以使用生成的upload_cert.der文件。有什么想法吗?
编辑:
感谢Pierre提供的答案和评论,我意识到如果您不创建/提供上传密钥,则应使用您现有的原始签名密钥,并使用upload_cert.der。因此,唯一的要求是通过运行以下命令插入上传证书:
keytool -importcert -file upload_cert.der -keystore original-signing-keystore.jks
...而且您应该能够继续将您的应用程序发布到Play商店中。