近期apk提交安全检测,检测出apk中有几个js文件过不了安全检测。查看代码也没找到是什么引用生成的。如果一个一个去除引用查看问题代价太大。所以想到用反编译和回编直接删除这几个文件来解决问题(注:这几个文件删除并不影响主功能,如果删除直接APP不能用了,那此方法也就没啥意义了)。下面介绍一下主要流程:
1、首先我们要准备反编译用到的apktool。网上直接下载一个就行了。
2、将所需要反编译的apk文件拷到此文件夹底下。这里我用一个test.apk演示。
3、cmd中切换到apktool目录,执行
java -jar apktool_2.6.0.jar d -f test.apk -o test
4、可以看到文件夹里会生成个test文件夹。
5、我们点进去就可以把想删的文件删掉。
6、接着我们再把APK重新打包。同样cmd中切换到文件夹,执行
java -jar apktool_2.6.0.jar b test
7、重新打包成功后,test文件里会生成一个dist文件,里面就是新的apk。
8、打包后新的APK是无法直接安装的,会提示不包含任何证书。我们使用签名工具重新签名就可以了。(注意:测试APK没啥代码和引用,签名很容易。如果是真实项目,有很多代码和引用,签名可能会失败。失败的话可以尝试将这个apk使用加固软件先加固一下,然后再签名。这时虽然也会提示签名失败,但是会生成新的签名后的APK,是可以安装检测的。这是我个人测试出来的经验,不一定通用)
9、以上就是反编译和成功打包的流程。此方法只作为应付安全检测,正式项目还是不要这么做。公司项目要求,没办法才想了个这个办法。