APK 重签名

应用程序签名?
为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性。
重签名?
做APP的单元测试时使用robotium(Android自动化测试框架),robotium是对Instrumentation做的二次封装,Instrumentation要求待测程序与testapk跑在同一个进程中,而且需要对其进行数据和资源的操作,那么就必须要保证签名一致,只有重签名后程序才能共享数据和代码、将被测程序与testapk跑在同一个进程中,所以使用robotium进行单元测试,重签名是必须要做的。

这里使用re-sign.jar进行apk重签名。

1.相关软件

  • 首先JDK,这个不用多说吧,无论是Android开发还是重签名工具都要JDK的环境,建议安装1.8版本的JDK,位数看自己机器,以方便使用Android-stdio。
  • SDK 一般下个最新版,解压就可以了,点这里下载。比如我现在就只装了5.1,6.0的版本(当年什么版本都下直接30G硬盘没了)
  • re-sign.jar,重签名工具下载地址:http://pan.baidu.com/s/1midCioS

2.环境变量

这个很重要,环境变量怎么理解呢,程序之间相互调用,程序A需要调用一下程序B,程序A就会找到程序B,使用它,首先就是找配置文件里面的路径,没有配置文件就找当前文件夹,当前文件夹没有就按环境变量找。
所以也有一个问题,同一个程序,不同的版本,两个变量值,谁放在前面就会用谁,比如你有两个JAVA,一个1.8,一个1.6,谁的路径在前面,你的JDK就是用的谁。

环境变量设置:进入我的电脑->右键,选择属性,在左边选择高级系统设置,点击环境变量即可。

需要的环境变量:

新建系统环境变量:JAVA_HOME,变量值为java安装目录,注意变量值最后没有分号!!

新建系统环境变量:ANDROID_HOME,变量值为SDK目录,注意变量值最后没有分号!!

修改系统环境变量:PATH,在PATH的最后加上
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
注意是英文分号!!

3.重签名

1.删除已有签名

用压缩软件打开apk文件,删除文件夹META-INF

2.签名

按住shift在re-sign.jar文件夹下(不要选中任何文件)右键,选择

在此处打开命令窗口,输入
java -jar re-sign.jar

可以看到

然后把你要重签名的APK拖到里面就可以了。

点击保存

即重签名成功,如果出现错误,请参照下面的错误处理解决。

4.错误处理

1.系统找不到指定的文件 /tools/zipalign

解决方案: 把/sdk/build-tools/23.0.3(数字可能不一样)下的zipalign.exe拷贝到/sdk/tools目录下

2.ANDROID_HOME环境变量无效

仔细看错误发现与错误1有细小不同,在路径中多了一个分号,说明你的ANDROID_HOME环境变量变量值末尾多了一个分号,去掉就可以了。

3.JAVA_HOME环境变量无效

错误图片中路径依然有一个分号,没错,你的JAVA_HOME环境变量变量值末尾多了一个分号,去掉就可以了。

坚持原创技术分享,您的支持将鼓励我继续创作!