1. 首先我们需要有自己的签名证书
打开dos窗口,进入jdk的bin目录
执行下面的命令 keytool -genkey -alias luochen.keystore -keyalg RSA -validity 20000 -keystore luochen.keystore
这里我们对几个参数进行一下说明
keytool是Java JDK自带的证书工具
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias参数表示:证书有别名,-alias luochen.keystore表示证书别名为:luochen
-keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取
-validity 20000表示有效时间20000天( K3
-keystore luochen.keystore表示要生成的证书名称为luochen
如上所述,会让你填入一些签名必须的信息,在你操作无误以后,会在bin目录下面生成一个luochen.keystore文件
这个就是我们需要的签名证书
2. 我们在重新签名之前,需要删除apk文件中原有的签名文件,那么就需要对apk文件进行解压
同样的,我们进入dos窗口,请确保已经准备好apktool
工作准备完毕,我们执行下面的命令 apktool d F:\software\Auto-sign\Xiezi.apk F:\software\Auto-sign\Xiezi
参数说明
apktool(一种专门用来操作apk文件的工具)
d 在apktool里面表示 解压
F:\software\Auto-sign\Xiezi.apk 要解压对apk文件所在的目录
F:\software\Auto-sign\Xiezi apk文件解压后保存的目录
如上图所示,表示解压已经成功,我们去相应的目录去查看
可以看到,跟我们想要的是一样的,我们查看一下解压目录里面的文件
目录主要内容解析:
(1) resources.arsc所有文本资源的编译产物,里面包含了各Location对应的字符串资源
(2) classes.dex编译后Class被dx程序转换成Dalvik虚拟机的可执行字节码文件
(3) AndroidManifest.xml编码后的Android项目描述文件,包括了Android项目的名称、版本、权限、程序组件描述等等
(4) res目录:存放各种Android原始资源,包括:动画anim、图片drawable、布局layout、menu菜单、xml等等q
(5) META-INF目录:存放签名后的CERT和MANIFEST文件,用于识别软件的签名及版权
然后我们将META_INF这个目录删除,并将这个文件夹中的所有内容重新打包,我们命名为xz.apk
3. 重新签名
我们将证书复制到与需要重新签名的apk文件相同的目录下,如下所示
我们再次进入dos窗口 执行下面的命令 jarsigner –verbose –keystore luochen.keystore –signedjar xz_signed.apk xz.apk luochen.keystore
参数说明
hjarsigner是Java的签名工具 Y. @6 P
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的luochen.keystore签名证书文件。
-signedjar xz_signed.apk表示签名后生成的APK名称,
xz.apk表示未签名的APK Android软件, luochen.keystore表示别名
参数说明