项目中的签名是jks格式,可是由于某个坑货渠道后台只能上传keystore格式的签名文件,所以要在不能更改签名的前提下将jks格式转换为keystore格式。
假设我们最初的签名文件是original.jks,我们需要更改为original.keystore。首先我们需要一个模板签名文件,然后先将jks转为p12,再将p12导入到这个模板文件中即可。详细过程如下:
1. 创建模板签名
可以通过AS或者terminal来创建。下面是命令创建template.keystore
keytool -genkey -v -keystore template.keystore -alias myAlias -keyalg RSA -validity 10000 -keystore /Users/logan/template.keystore
为了便于对比更改前后的签名文件信息,我们先查看原始签名的证书指纹(MD5,SHA1,SHA256)
keytool -v -list -keystore /Users/logan/Documents/certificate/original.keystore
2. jks转pkcs12
keytool -importkeystore -srckeystore /Users/logan/Documents/certificate/mygamez_fingersoft_hcr2_china_unicom.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore client.p12
3. pkcs12转keystore
pkcs12是不能直接转keystore的,网上很多说法都是错误的,我们需要将pkcs12导入到一个现有的keystore当中,
keytool -v -importkeystore -srckeystore /Users/logan/client.p12 -srcstoretype PKCS12 -destkeystore template.keystore -deststoretype JKS
这个命令会直接在现有的template.keystore上更改并自动覆盖掉原来的问题件,所以新生成的签名文件仍然叫template.keystore。
现在template.keystore的签名应该与original.jks的签名信息是一样的了。
可以通过以下命令来验证
keytool -v -list -keystore /Users/logan/Documents/certificate/template.keystore
Done!