android技巧03:对APK进行重签名
1. 生成Android APK包签名证书
1). 在doc中切换到jdk的bin目录
cd C:\Program Files\Java\jdk1.6.0_18\bin
2). 运行下面的命令
keytool –genkey –alias android123.keystore –keyalg RSA –validity 20000 –keystore android123.keystore
/*解释:keytool工具是Java JDK自带的证书工具
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias参数表示:证书有别名,-alias mine.keystore表示证书别名为:mine
-keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取
-validity 20000表示有效时间20000天( K3
-keystore mine123.keystore表示要生成的证书名称为mine123
*/
输入完回车后屏幕显示:
输入keystore密码:[密码不回显](一般建议使用20位,最好记下来后面还要用)
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
[Unknown]:lili
您的组织单位名称是什么?
[Unknown]:snoopy
您的组织名称是什么?
[Unknown]:snoopy team
您所在的城市或区域名称是什么?
[Unknown]:beijing
您所在的州或省份名称是什么?
[Unknown]:beijing
该单位的两字母国家代码是什么
[Unknown]:CN
CN=lili, U=snoopy, O=snoopy team, L=beijing, ST=beijing, C=CN正确吗?
[否]:Y
输入< mine.keystore>的主密码
(如果和keystore密码相同,按回车):
查看C:\Program Files\Java\jdk1.6.0_18\bin,生成了以后签名用的证书Key:mine123.keystore
这里,大家如果试过在eclipse中生成一个签名文件时,它的大小也是2kb,同时生成过程中,还是会让填写别名的。
2. 删除之前的签名文件
1). 用解压工具解压缩apk文件(如:解压到D:\Sign\PhoneBook)
压缩包内容解析:
- AndroidManifest.xml
- META-INF目录
- res目录
- lib目录
- assets目录
- classes.dex文件
- resources.arsc
2). 找到下面的目录META-INF,删除目录META-INF
3). 将PhoneBook整个文件夹用zip工具,重新打包成zip压缩包,然后更改后缀为apk (注意:产生的PhoneBook.zip中没有二级根目录)
3. 重新签名APK文件
1). 将证书复制到与需要重新签名的apk文件相同的目录下(如:复制到D:\Sign)
2). 在doc中切换到需要重新前面的apk文件的目录下
cd D:\Sign
3). 运行下面的命令
jarsigner –verbose –keystore mine123.keystore –signedjar PhoneBook_signed.apk PhoneBook.apk mine.keystore
/*解释:hjarsigner是Java的签名工具
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的mine123.keystore签名证书文件。
-signedjar PhoneBook_signed.apk表示签名后生成的APK名称,PhoneBook.apk表示未签名的APK Android软件, mine.keystore表示别名
*/
输入完回车后屏幕如下图显示:
查看D:\Sign目录,已生成重新签名后的PhoneBook_signed.apk文件
另外,有时候会发现这种方式打出的APK包在某些地方用不了,文章《简单修改APK和重新签名》提供了一个更为便捷的方案。
参考资料: