其实Android的apk文件(AndroidPackage Android 安装包)就是个zip压缩包,可以用平常的解压缩软件打开
来介绍一下如何从Java源码和资源文件生成这个apk压缩包的。
这个压缩包中的mete-INF里是一些软件信息(资源路径等等)
res是资源文件的目录,和原项目中相同。
resources.arsc是二进制的资源文件,对应项目中的values等。
AndroidManifest.xml,这个和项目里的那个相同。
最关键的就是这个
classes.dex,程序字节码。
众所周知Java程序的编译过程,java源码->.class字节码然后通过Java虚拟机读取执行。Android也是类似,由于Android有自己的Java虚拟机,所用的字节码就和原来的.class文件不同,所以需要将之进行二次转换从而得到dex字节码文件,这就是可以在Android系统中的虚拟机运行了。
但说到底也还是个Java代码转化来的字节码文件,所以反编译四相对容易的(也不一定,因为开发者为了保护会做一些反编译的措施)。
比如用APK 改之理这个软件即可得到反编译的Java代码
了,暂时不深究了。