请知悉:本文最近一次更新为 1 year 前,文中内容可能已经过时。

1.签名的意义

为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。

2.签名的步骤

a.创建key

b.使用步骤a中产生的key对apk签名

3.具体操作

方法一:命令行下对apk签名(原理)

1)创建key,需要用到keytool.exe (位于jdk1.6.0_24jrein目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于 jdk1.6.0_24in目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入

keytool -genkey -v -aliasCERT-keyalg RSA -keysize 2048 -validity 10000 -keystoreCERT.keystore

创建过程需要输入一些标识信息和密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改):

CERT.keystore —- 证书保存的文件名

CERT —- 证书的别名

10000 —- 10000天的有效期

2048 —- 默认为1024 bits,Android 建议使用2048 bits或更高

其他的详细信息可以使用keytool -help查看帮助

证书生成后使用如下命令可以查看证书的信息:

keytool -list -aliasCERT-keystoreCERT.keystore

2)使用jdk的jarsigner工具对apk文件签名

jarsigner -verbose -keystoreCERT.keystoreto_sign.apkCERT
jarsigner -verbose -keystore d:project360Wallpaper.keystore -signedjar d:qihusign.apk d:Qihuunsign.apk cret

签名过程需要输入证书的密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改):

CERT.keystore —- 证书保存的文件名

CERT —- 证书的别名

待签名的apk文件根根目录下如果有文件夹“META-INFO”,请先删除(重新签名就需要这样做)。

如果不想创建过程输出太多信息,可以删除“-verbose” 。

上述签名会直接覆盖原来的文件,如果不想被覆盖而签名为另外的新文件 signed.akp,

只需将 to_sign.apk 改为-signedjar to_sign.apk signed.akp即可。

签名后可以使用如下命令验证是否签名成功:

jarsigner -verify to_sign.apk

如果需要查看更详细的验证信息,可修改为:

jarsigner -certs-verbose -verify to_sign.apk

注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。

3)使用android sdk的zipalign工具优化已签名的apk文件

zipalign -v 4unaligned.apk aligned.apk

注意要在签名后再zipalign。这个工具不是jdk自带的,而是在%ANDROID_HOME% oolszipalign.exe。

例子:

为APK重新生成签名

1)、将证书复制到与需要重新签名的apk文件相同的目录下

2)、进入该目录下执行以下语句

jarsigner -verbose -keystore CERT.keystore -signedjar weibo_signed.apk 
netease_microblog_android_unsigned.apk CERT 

命令解释:

jarsigner是Java的签名工具,JDK自带

-verbose参数表示:显示出签名详细信息

-keystore表示使用当前目录中的android.keystore签名证书文件。

–signedjar weibo_signed.apk netease_microblog_android_unsigned.apk表示签名后生成的APK名称为 weibo_signed.apk,未签名的APK Android软件名称为netease_microblog_android_unsigned.apk

CERT: 表示签名文件的别名,生成证书的时候有书写

执行以上操作之后在目录下生成了weibo_signed.apk ,经过自己签名的APK文件


参考资料

如何给apk文件签名


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《如何给apk文件签名》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌