Android打包apk证书签名报错java.io.IOException: Invalid keystore format
先看自己是不是动过jdk,比如重新安装、升级或降级过之类的操作,如果确实动过jdk,那继续往下.
Java密钥库常用的格式是JKS(.jks)和PKC12(.keystore),不同版本的jdk所支持的密钥库格式有差异。

接下来验证是不是密钥库文件格式的问题:
1. 把自己的密钥库文件copy到jdk的bin文件夹中(这个bin文件夹中会有一个 keytool.exe 工具,别复制错位置了)
2. 复制到bin文件夹之后,在这个目录下打开cmd
3. 然后运行 keytool -list -v -keystore yourfile ,如 keytool -list -v -keystore mykey.keystore
4. 如果没有成功显示文件里的内容(如下),而是报了Invalid keystore format的错误,那就意味着签名文件不对,要重新生成一份它支持的

5. 生成签名文件
以下按情况来,可以选择重新生成格式一样的签名,然后再执行一次keytool -list -v -keystore yourfile,如果还是报错,那就生成另外一个格式的签名文件,再执行一次keytool -list -v -keystore yourfile,能把文件的内容读取出来就可以正常打包apk了
// 生成JKS格式的签名文件
keytool -genkeypair -v -keystore mykey.jks -keyalg RSA -keysize 2048 -validity 36500 -alias mykeyalias -storepass 123456
-keystore mykey.jks:密钥库文件名(可更改为其他文件名)。-keyalg RSA:密钥算法为 RSA。-keysize 2048:密钥大小为 2048 位。-validity 36500:设置密钥的有效期(36500 天即 100 年)。-alias mykeyalias:设置密钥对的别名。-storepass 123456:设置密钥库的密码。
// 生成PKC12格式的签名文件
keytool -genkeypair -v -keystore mykey.p12 -storetype PKCS12 -keyalg RSA -keysize 2048 -validity 36500 -alias mykeyalias -storepass 123456
-keystore mykey.p12:密钥库文件名(可更改为其他文件名)。-storetype PKCS12:指定密钥库类型为 PKCS12 格式。
// JKS 转换为 PKCS12
keytool -importkeystore -srckeystore mykey.jks -destkeystore mykey.p12 -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456
-srckeystore mykey.jks:源密钥库文件(JKS 格式)。-destkeystore mykey.p12:目标密钥库文件(PKCS12 格式)。-deststoretype PKCS12:设置目标密钥库类型为 PKCS12。-srcstorepass 123456:源密钥库的密码。-deststorepass 123456:目标密钥库的密码。

浙公网安备 33010602011771号