java.io.IOException: Invalid keystore format 签名异常

Failed to load signer “signer #1”
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
at java.security.KeyStore.load(KeyStore.java:1445)
at com.android.apksigner.SignerParams.loadKeyStoreFromFile(SignerParams.java:353)
at com.android.apksigner.SignerParams.loadPrivateKeyAndCertsFromKeyStore(SignerParams.java:239)
at com.android.apksigner.SignerParams.loadPrivateKeyAndCerts(SignerParams.java:181)
at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:277)
at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:83)

在 android studio 里通过 build-Generate Signed Bundle or APK 页面创建了一个签名文件,然后这个签名文件在 android studio 里使用能正常签名,但通过命令行签名时报了上面异常,签名失败。

打开 android studio 设置页面查看 java 版本,17.0.9

所以上面通过 AS 生成签名文件时,实际上是使用这个 17.0.9 版本的 java 环境里的 keytool 生成的签名文件;
但实际运行签名指令时,又没在 17.0.9 环境下运行,例如电脑的全局 java 环境配置的是 1.8 的,就会出现这异常;

解决方案:
修改一下全局 java 环境到1.8,使用这个 java 版本的 keytool 生成签名文件,直接用指令生成
keytool -genkeypair -v -keystore test.jks -storepass 123456 -keyalg RSA -keysize 2048 -validity 10000 -alias test

因为使用 java1.8 版本生成的签名文件,可以在高版本的 java 环境正常使用;但使用 java 17 版本生成的签名文件却不能在低版本 java 环境正常签名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值