反编译是学习Android的一种手段,抱着学习的心态学习别人的优秀代码,反编译的过程会加深自身对Android理解。
第一步:下载apktool和dex2jar
apktool包含有aapt.exe、apktool.bat、apktool.jar
dex2jar有多个版本,最好下载最新的,因为dex2jar版本过低的话反编译的时候就会出错。(网上有很多资源,我就不贴资源链接了)
第二步:将apk的dex文件反编译成jar文件
将apk解压找到classes.dex,把classes.dex复制到dex2jar目录下
我是在window的环境下,打开cmd然后cd到dex2jar目录,执行命令:dex2jar.bat classes.dex
你会看到目录下多了个classes_dex2jar.jar文件,这个就是编译过后的代码包了
然后使用jd-gui.exe打开jar文件就可以看到反编译过的代码了
反编译出来的代码并不会像我们自己写的代码那么好明了好看,虽然也有着相应的规律,但更多的是要靠自身对代码的理解
如果出现这种情况,我一般是直接去看smali文件
第三步:使用apktool反编译apk
cd到apktool目录执行命令:apktool.bat d -f apk或apk路径 -o 目标文件夹
assets、res和AndroidManifest.xml对应安卓过程,apktool.yml里面是apk的sdk、版本信息等,所有的代码都在smali目录
如果觉得这些操作太麻烦的话可以去下载ApkIDE改之理,这个是由大神七少月写的工具,效果很赞。
感兴趣的可以去看看,有详细的内容教程,这里就不再啰嗦了。