在使用robotium针对无源码只有apk的情况下,我们需要对被测应用进行重签名操作,以保证与我们的测试apk签名一致。常用的方法是我们手工使用resign.jar包进行重签名操作,但是与Jenkins进行集成的时候这个方法就不合适了。这时候我们就需要用我们使用脚本来实现重签名操作,通过对resign的研究,整理了实现步骤,如下:
1、使用zip工具解压被测应用apk包
2、删除签名文件夹META-INF
3、使用zip重新打包,生成新的无签名的apk包
4、使用命令 jarsigner -keystore C:\debug.keystore -storepass android -keypass android XXXXX.apk androiddebugkey
需要注意的是apk包实际上是压缩的zip包,只要我们安装了zip就可以对apk进行解压、打包。
有了操作步骤我们只需要使用命令实现:
@echo off
unzip -o D:\Baofeng\se_shipper_1.4.2.apk -d D:\Baofeng\se_resign
del/f/s/q D:\Baofeng\se_resign\META-INF
d:
cd Baofeng\supaide_resign
zip -r se_resign.apk *
copy se_resign.apk D:\Baofeng
cd ..
del/f/s/q D:\Baofeng\supaide_resign
jarsigner -keystore C:\debug.keystore -storepass android -keypass android D:\Baofeng\se_resign.apk androiddebugkey
adb uninstall com.supaide.client
adb install D:\Baofeng\se_resign.apk
经过测试可以成功替换apk的签名,并使用robotium脚本在手机端运行case。