1、APK编译主要分以下几步:
编译资源文件:
主要负责编译XML,图片等一些资源文件。通过aapt工具,生成resources.arsc索引和res文件夹,同时aapt工具还负责把所有的资源文件生成二级制文件,以便程序访问。
编译java源代码:
通过javac编译,把所有的.java文件生成.class文件
生成Dex文件:
通过dx工具,把所有的.class文件统一生成可供Dalvik虚拟机运行的.dex文件。
生成APK文件:
通过apkbuilder把dex和资源文件打包,生成APK文件
2、反编译
利用系统的dexdump -d classes.dex > test.txt,这种形式只是生成了smali语言的文档,作用不大。
apktool+dex2jar+jd_gui来反编译
(1)首先在http://code.google.com/p/android-apktool/downloads/list
下载两个文件:apktool1.4.3.tar.bz2 和apktool-install-windows-r04-brut1.tar.bz2
(2)把两个文件夹里的jar包和apktool.bat放到SDK的platform-tools文件夹里。
(3)命令行执行apktool d E:\XX.apk test,这样就会生成test文件夹,里面的XML格式文件就是源文件。
(4)下载dex2jar工具,把XX.apk直接解压得到的classes.dex文件放到该文件夹底下,命令行定位到该文件夹,执 行dex2jar classes.dex。结果就会生成一个jar包
(5)利用工具jd_gui,导入jar包就能看到源代码