在转换前首先要保证开发环境必须要有openssl工具,这个工具提供个下载链接链接:http://pan.baidu.com/s/1eRAoKb4 密码:1p60
。下载解压后,只需要将bin/openssl.exe的路径放进系统的环境变量中,即可。
执行命令的步骤如下:
1. keytool -importkeystore -srckeystore debug.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem (注意如果没有openssl工具或者没有正确的将openssl.exe路径添加进环境变量中,将会报错)
复制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建个文件) cert.x509.pem
[
pem里面内容(下的一样):
—–BEGIN CERTIFICATE—–
。。。。
—–END CERTIFICATE—–
]
复制 “BEGIN RSA PRIVATE KEY” “END RSA PRIVATE KEY” 到(同上) private.rsa.pem
这一步需要注意的是,有些keystory文件转换出来的 tmp.rsa.pem,里面不止一个私钥和证书,具体先问清楚客户需要用哪个私钥和证书,再复制。
4.openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocrypt
完毕 收集文件 cert.x509.pem private.pk8 其余的中间文件删除即可
这里提供一个将keystory自动转化pk8和pem的工具,下载链接链接:http://pan.baidu.com/s/1nvlUkQl 密码:no1x
使用这个工具的方法如下:
java -jar ks2x509.jar autokey1.keystore ceshi 123456 123456
需要注意的是,如果keystory中包含不只有一个私钥和证书时,不可以用这个工具转换,会报空指针的错误。
最后使用生成的pk8和pem给APK签名:
java -jar signapk.jar cert.x509.pem private.pk8 unsigned.apk signed.apk
(signak.jar文件在编译过的源码目录:out\host\linux-x86\framework\中)