学习最快的速度莫过于模仿,学习别人优秀的代码逻辑和UI设计,能让自己少走很多弯路。对于android开发者,看到一个优秀的apk,总想知道别人是如何设计和布局的。至于能不能看到原作者的代码,那要看运气了。若是代码没有混淆,那就恭喜你,原作者所有的代码都一清二楚,包括注释。当然,现在不注重成果保护的开发者越来越少。所以我们看到的代码基本上都是混淆过的。
反编译apk,最重要的目的是学习别人的UI布局和提取素材。
下面,结合具体的工具教你一步一步反编译apk, 以58.apk为例。
1,下载apktool,在cmd命令窗口下,移动至apktool.bat所在的文件夹。
运行:apktool d d:\apktool\58.apk d:\apktool\58
其中d:\apktool\58.apk为apk的路径地址,d:\apktool\58为解压后的目录
运行成功后,会在D:\apktool文件夹下生成一个名为58的文件夹。
2,现在,你能看到所有的资源素材,res/目录下的布局文件和图片,还有AndroidManifest.xml。
3,但是,代码目前是看不到的,我们需要另外一种方式来获取。
4,将58.apk改为58.zip。注:apk实际上是一个zip压缩包。
5,解压提取出58.zip中的classes.dex文件。
6,下载 dex2jar-0.0.9.7.zip,解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录
运行
dex2jar.bat classes.dex
生成
classes.dex.dex2jar.jar
7,运行jd-gui.exe,打开classes_dex2jar.jar,就能看到源码,不过58的代码混淆了,看起来有点费劲。
8,至此,反编译工作就大功告成。
本文中涉及到的软件下载见底部。
工具下载:apktool dex2jarjdgui