java.io.IOException: Invalid key
2022-11-01 本文已影响0人
逆水寒Stephen
执行apk签名命令格式如下:
C:/Users/root/AppData/Local/Android/Sdk/build-tools/30.0.3/apksigner sign --ks C:\development\xxxxx.jks --ks-key-alias xxxx --ks-pass pass:xxxx --key-pass pass:xxx --out C:\development\xxxxx_signed.apk C:\development\xxorigin_app.apk
- 详细报错如下:
Failed to load signer "signer #1"
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
at java.security.KeyStore.load(KeyStore.java:1445)
at com.android.apksigner.ApkSignerTool$SignerParams.loadKeyStoreFromFile(ApkSignerTool.java:829)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCertsFromKeyStore(ApkSignerTool.java:719)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCerts(ApkSignerTool.java:659)
at com.android.apksigner.ApkSignerTool$SignerParams.access$500(ApkSignerTool.java:611)
at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:266)
at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89)
这个报错究其原因是签名的jks文件和运行的apksigner命令版本不匹配导致,姑且猜测是一个apksigner执行文件对应一个时段的jks生成器,因此要解决这个问题,需要确定AndroidSdk里面一个合适的build-tools版本,具体到你AndroidSdk的build-tools查看有哪些版本,然后用这些版本尝试替换掉命令中的详细版本(如:
C:/Users/root/AppData/Local/Android/Sdk/build-tools/替换的具体版本/apksigner
),能执行成功为准!