java.io.IOException: Invalid keystore format

执行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),能执行成功为准!

你可能感兴趣的:(java.io.IOException: Invalid keystore format)