对于android应用来说,发布release版本的时候,需要有个正式的签名,这个时候就需要用到jarsigner命令了。

步骤

  • sign
    签名就是根据keystore去给apk加上签名,需要注意的是debug版本的apk会自动加签名

  • align
    align就是对apk包进行一次优化

jarsigner

检测jar包是否已经签名

jarsigner -verify demo-unsigned.apk

如果没有签名,则输出

没有清单。
jar 未签名。(缺少签名或无法解析签名)

如果有签名,则输出

jar 已验证。

警告:
此 jar 包含证书链未验证的条目。
此 jar 包含的签名没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2020-01-13) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。

有关详细信息, 请使用 -verbose 和 -certs 选项重新运行。

进行签名

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \ 
-keystore /Users/mars/demok.keystore -storepass keystorepwd \
demo-unsigned.apk demok \ 
&& jarsigner -verify -verbose -certs demo-unsigned.apk 

其中demok为keystore的别名

align

zipalign -v 4 demo-unsigned.apk demo-signed.apk

合并在一起的命令就是

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \ 
-keystore /Users/mars/demok.keystore -storepass keystorepwd \
demo-unsigned.apk demok \ 
&& jarsigner -verify -verbose -certs demo-unsigned.apk \
&& zipalign -v 4 demo-unsigned.apk demo-signed.apk

doc


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...