以前对apk重新打包签名都是用的apktool里面的Auto-sign工具,后来发现有时候利用该工具对一些apk签名会失败,所以后来就使用 jarsigner这个工具,现记录一下这个工具的使用方法


1 首先要生成一个自己的key

D:\>keytool -genkey -alias myKeyStore -keyalg RSA -validity 20000 -keystore myKeyStore

输入密钥库口令:

再次输入新口令:

您的名字与姓氏是什么?

[Unknown]: sun

您的组织单位名称是什么?

[Unknown]: ze

您的组织名称是什么?

[Unknown]: duo

您所在的城市或区域名称是什么?

[Unknown]: df

您所在的省/市/自治区名称是什么?

[Unknown]: fd

该单位的双字母国家/地区代码是什么?

[Unknown]: cn

CN=sun, OU=ze, O=duo, L=df, ST=fd, C=cn是否正确?

[否]: y


输入 <myKeyStore> 的密钥口令

(如果和密钥库口令相同, 按回车):



这里输入密钥库口令: 要输入你的密钥库的指令,并且要记住后面用的着,没有什么意外情况的话,填写了下面的指令以后,就能生成一个myKeyStore 这个密钥文件了



2 使用密钥文件来重新签名自己的apk

jarsigner -verbose -keystore myKeyStore -signedjar TestB_signed.apk TestB.apk myKeyStore


D:\>jarsigner -verbose -keystore myKeyStore -signedjar TestB_signed.apk TestB.apk myKeyStore

输入密钥库的密码短语:

正在添加: META-INF/MANIFEST.MF

正在添加: META-INF/MYKEYSTO.SF

正在添加: META-INF/MYKEYSTO.RSA

正在签名: AndroidManifest.xml

正在添加: assets/

正在签名: assets/finalout.dex

正在签名: classes.dex

正在添加: lib/

正在添加: lib/armeabi/

正在签名: lib/armeabi/libinit.so

正在签名: lib/armeabi/libsocketback.so

正在签名: lib/armeabi/libsocketclient.so

正在添加: res/

正在签名: resources.arsc

正在添加: res/drawable-hdpi/

正在签名: res/drawable-hdpi/ic_launcher.png

正在添加: res/drawable-ldpi/

正在签名: res/drawable-ldpi/ic_launcher.png

正在添加: res/drawable-mdpi/

正在签名: res/drawable-mdpi/ic_launcher.png

正在添加: res/layout/

正在签名: res/layout/login.xml

正在签名: res/layout/main.xml

jar 已签名。


警告:

未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期

日期 (2069-04-17) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。



输入密钥库的密码短语:

这里输入刚才设置的密钥密码,然后就能够生成签名后的apk了,然后安装即可..