开发环境:Android Studio 4.2
问题描述:使用AndroidStudio4.2 生成签名文件后签名打包出错。
错误信息:A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade> com.android.ide.common.signing.KeytoolException: Failed to read key huli2 from store "/Users/xxxxx/Desktop/huli2.jks":Get Key failed: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
错误原因: 高版本AndroidStudio/高版本keytool生成的签名文件的密钥库类型是PKCS12。PKCS12密钥库不支持其他存储和密钥口令。在生成签名文件时,需要设置【KeyStore的password】和【KeyAlias的password】,PKCS12密钥库会忽略【KeyAlias的password】。
(其实,在生成签名文件时,已经提示给我们了。如下图↓)
解决办法:如果生成签名文件时,【KeyStore的password】和【KeyAlias的password】设置的不相同。签名打包时两个密码都填写【KeyStore的password】。(因为alias的密码被忽略了,默认和keyStore的password相同。)
(红色箭头指向的两个密码都填写KeyStore的password。如下图↓)
附录一:《Android Studio 生成签名文件流程》
(之后会弹出两个Error提示,都点击“OK”。如下图↓)
附录二:获取签名文件的MD5、SHA1、SHA256。
方式一:
cmd指令查看:keytool -list -v -keystore xxx.jks
(高版本只显示SHA1和SHA256,想要获取签名文件的MD5还可以通过下面的方式。)
方式二:
Android Studio --> 右边框 --> Gradle --> 项目 --> Task --> 双击signingReport
(新版本Android Studio 右上角 Gradle 可能没有 Tasks,默认隐藏了,打开方式点这里。)