原文:http://www.youyong.top/article/1158d20f481b
有一次应用认领,需要对一个空包进行签名,可在android studio中并没有找到直接apk签名的功能,怎么办那?
其实一条命令就可以。
android studio签名相关的功能其实都是调用jdk提供的工具实现的,而这些工具我们通过命令行也能够调用(mac和win一样)
直接对apk进行签名
使用工具 jarsigner
该工具位于jdk_xxx\bin目录下(可以cmd+;->sdk location查看jdk的路径) ,命令如下:
jarsigner -verbose -keystore your_keystore_file -signedjar test_signed.apk test.apk your_keystore_alias
注: test_signed.apk是签名之后的文件,test.apk是需要签名的文件
另外需要注意的是,如果你的jdk版本在1.7以上,你在对apk签名时,需要加上这个参数:
-digestalg SHA1 -sigalg MD5withRSA
否则同样会出现:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]的错误。
可能会有如下警告:
未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2042-07-06) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。
这个警告也不影响签名,只是看着不顺心,命令后加上:
-tsa https://timestamp.geotrust.com/tsa
即可
所以执行的全部命令是:
jarsigner -verbose -keystore ./Downloads/安卓应用/Keystore/daxueyzd -signedjar ./Downloads/Baidu_Claim.apk ./Downloads/Baidu_Claim_unsigned.apk your_keystore_alias -digestalg SHA1 -sigalg MD5withRSA -tsa https://timestamp.geotrust.com/tsa
查看keystore
从eclipse转到android studio,签名的时候让输入alias(别名),可能有人忘记了,我们可以从keystore文件中找到:
用到的工具是keytool ,该工具位于 jre/bin目录下:
命令如下:
keytool -list -v -keystore your_keystore_file
另外生成keystore的命令也是keytool
查看apk签名
既然应用认领要核对签名,那么就得能查看签名,可校验应用是否被篡改过。
命令如下:
jarsigner -verify -verbose -certs your_apk_file