签名对apk包来说是很重要,这一点不用多说。下面介绍一下,如何使用命令行对apk进行签名。
先把这个过程需要注意的地方列出:
a. 先把apk包放到JDK的bin目录下面,把生成的keystore也放到这个目录下面。例如:我的目录是:D:\Program Files\Java\jdk1.7.0_51\bin
b. 接着打开运行cmd,打开命令行,然后把命令行定位到你的jdk的bin目录下。例如:我的jdk的bin目录是:
注意事项说完,那就开始进行签名了:
1. 首先, 我们可以先对apk包进行判断,看看该包是否已经有过签名了。使用的命令是:jarsigner -verify enhanced.apk
enhance.apk是我要验证是否签名过的apk包,这里只需要替换成你的apk包即可。如果没有签名过,那会出现下面提示:
2. 接着开始对我的apk进行签名,使用如下命令:jarsigner -verbose -keystore android.keystore -signedjar enhanced_signed.apk enhanced.apk android.keystore
说明下:
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的android.keystore签名证书文件,这里需要替换成你自己的keystore !
-signedjar enhanced_signed.apk enhanced.apk android.keystore表示签名后生成的APK名称是enhanced_signed.apk,需要签名的APK名称是enhanced.apk,android.keystore表示keystore的别名,这里你需要把这个别名替换成你的keystore的别名 !
3. 接着,会提示你需要输入密码,该输入什么你自己清楚咯。
4. 操作正确的话,你会看到输出一堆东西,如下:
大功告成,这是你的apk就是已经签名好的啦!
重点补充:以上使用的JDK版本是1.6的,如果你的JDK是1.7或者以上的版本,那么使用上面签名命令的包,肯定是安装不了的,会提示一下信息:
那么,我们需要使用下面的新签名命令:
jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore android.keystore -storepass android -signedjar enhanced_sign.apk enhanced.apk android.keystore
对比一下旧的命令:jarsigner -verbose -keystore android.keystore -signedjar enhanced_signed.apk enhanced.apk android.keystore
可以发现,新命令添加了-digestalg SHA1 -sigalg MD5withRSA这一个东西。抽取一下语法如下:
jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore [你的keystore] -storepass [keystore的密码] -signedjar [签名后的apk] [未签名的apk] [keystore的别名]
使用新命令签名的apk包就能够正常安装了!
希望本文能够帮到需要的朋友,如果签名过程遇到什么问题,欢迎留言探讨!谢谢!