APKtool编译生成的apk若没签名,不能安装,可以用signapk对apk文件签名。signapk是Android源码包中的一个签名工具,源码路径为/build/tools/signapk/SignApk.java!
signapk签名工具介绍:
SignApk.jar是一个已包含在Android平台源码包中的工具。如果要使用SignApk.jar,你需要创建一个带有对应证书/公钥的私钥。而你可以使用Openssl来创建私钥/公钥对。在Unix/Linux系统中使用Openssl相对来说比较容易。
signapk签名工具用法:
如何使用OpenSSL创建私钥/公钥对
在OpenSSL\bin文件夹下按顺序输入
openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -config C:\OpenSSL\openssl.cnf -out request.pem
openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
(如果你创建了自己的私钥/公钥对)
复制certificate.pem和key.pk8到文件夹中,在该文件下下
java -jar signapk.jar certificate.pem key.pk8 your-app.apk your-signed-app.apk
或是
java -jar signapk.jar certificate.pem key.pk8 your-update.zip your-signed-update.zip
使用方法:
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk 执行后new.apk即为签名后的文件。
其中platform.x509.pem替换为压缩包中的testkey.x509.pem,platform.pk8替换为testkey.pk8。
之前我们说过signapk工具也可以对刷机rom卡刷包进行前面,同样的我们也可以使用上面的方法对卡刷包进行签名。我们只需要将上面的最后两个参数修改下就可以了,将old.apk修改为卡刷包的文件名,如update.zip,将new.apk修改为签名过后生成的文件名,如update_new.zip即可。