生成签名APK时提示cannot recover key问题求助
解决使用原有密钥库签名APK时出现的“cannot recover key”错误
我之前也碰到过一模一样的情况——密钥库明明能正常读取别名、生成SHA值,输错密码还会提示“wrong verification code”,但就是在签名APK时卡壳报“cannot recover key”。结合你的场景(必须用原密钥库更新Google Play应用),给你几个针对性的解决方法:
先确认密钥库密码和密钥密码是否一致
很多人容易忽略:密钥库本身的密码(keystore password)和密钥条目对应的密码(key password)是可以分开设置的。你可以用keytool命令验证两者的匹配性:keytool -list -v -keystore 你的密钥库文件名.jks输入密钥库密码后,如果能正常显示密钥别名的详细信息,那试试把这个密码同时作为密钥密码填入签名窗口。如果之前你特意设置过不同的密钥密码,一定要回忆起来——这是最常见的触发该错误的原因。
清理构建缓存后重试
Android Studio的构建缓存偶尔会抽风,导致签名流程出现异常。你可以按这个步骤操作:- 点击顶部菜单栏的
Build→Clean Project - 接着点击
Build→Rebuild Project - 重新尝试生成签名APK
- 点击顶部菜单栏的
导出原密钥并导入到新密钥库(备份后操作!)
如果上面的方法都没用,可以尝试把原密钥导出后,导入到一个新的密钥库中(这样新密钥库和原密钥的签名信息完全一致,不影响Google Play更新):- 先导出原密钥的证书:
keytool -exportcert -alias 你的密钥别名 -keystore 原密钥库.jks -file cert.cer - 创建新的密钥库并导入证书:
keytool -importcert -alias 你的密钥别名 -file cert.cer -keystore 新密钥库.jks
操作时记得备份好原密钥库,避免意外丢失。
- 先导出原密钥的证书:
转换密钥库格式为PKCS12
有些老版本的JKS格式密钥库,和新版本Android Studio的签名工具兼容性不太好。你可以把它转成更通用的PKCS12格式:keytool -importkeystore -srckeystore 原密钥库.jks -destkeystore 新密钥库.p12 -srcstoretype JKS -deststoretype PKCS12转换完成后,用这个PKCS12格式的密钥库尝试签名。
内容的提问来源于stack exchange,提问作者Abubakar Iftikhar
相关产品推荐
相关产品推荐

