android - 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目
问题描述
我已完成以下步骤来使用 Google 上传证书签署 APK。
- 从 google play 开发网站的应用签名部分获得上传证书。
创建了一个密钥
keytool -genkey -v -keystore XXXXX.keystore -alias XXXXX -keyalg RSA -keysize 2048 -validity 10000
从 Google 导入上传证书
keytool -importcert -file upload_cert.der -keystore XXXXX.keystore
然后我列出有关密钥库的信息
keytool -list -v -keystore XXXXX.keystore -storepass 密码
从那里我可以看到谷歌的进口商证书有别名“mykey”
当我尝试使用别名“mykey”签署apk jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore XXXXX.keystore android-release-unsigned.apk XXXXX
我收到以下错误:mykey 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。
解决方案
签署 APK 不仅需要证书(这是公共信息),还需要私钥。尽管为方便起见,Play 管理中心会与您共享证书,但只有您可以访问私钥。上传密钥是您用于签署您上传的第一个 APK 的任何密钥(假设您此时注册了 App Signing by Play):只需使用与您第一次上传相同的密钥库 + 别名重新签名即可。如果您丢失了最初用于签名的密钥,则可以联系 Play 支持团队以重置密钥。
推荐阅读
- python - Pandas - 更改单元格值以使它们等于与整行平均值的偏差?
- javascript - 使用 res.render get 后如何将数据发布到相同的 ejs 视图或部分?
- oauth - 通过浏览器退出 OAuth 2
- php - php分配一些内存
- java - 我可以为 Mockito.mock(Class.class) 设置一些属性吗?
- python - Python PrettyTable - 在列中输入一次值并更新其出现次数
- python - 我可以从开区间上的均匀分布中抽取一个随机值吗?
- visual-studio-code - 对 VSCode 片段变量执行数学运算
- apache-kafka - Kafka 2.0 - Kafka Connect Sink - 创建 Kafka 生产者
- java - JDBC 的 Connection 和 Statement 对象是按引用传递还是按值传递?