classes.dex文件在apk文件中的作用
当打开apk文件与WinRAR(S / W打开压缩文件)。 我有一堆包装在apk里面的文件。 其中classes.dex是一个。 我的问题是这个文件的作用是什么,如果我们修改/删除相同的文件,它会影响apk?
要制作一个APK文件,首先编译一个Android程序,然后将其所有部分打包成一个文件。 这包含该程序的所有代码(这些是.dex files
),资源,资产,证书和清单文件。
程序通常用Java
编写并编译成bytecode
。 然后在安装到设备上之前,将它们从Java Virtual Machine-compatible .class files
转换为与Dalvik-compatible .dex
(Dalvik可执行文件)文件。 紧凑的Dalvik Executable格式被devise为适用于受限于内存和处理器速度的系统。
- classes.dex:以Dalvik虚拟机可理解的dex文件格式编译的类
由于.dex文件包含APK资源,因此对这些文件的任何编辑都将直接影响APK。
.dex文件编译的Android应用程序代码文件。
从Android API指南
Android程序被编译成.dex (Dalvik Executable)
文件,这些文件又被压缩到设备上的一个.apk文件中。 .dex文件可以通过自动翻译以Java编程语言编写的编译应用程序来创build。
是的,如果你将删除这些文件,它会影响APK。
classes.dex实质上是所有的应用程序逻辑。 给定应用程序的代码是用java编写的,然后编译成类文件,然后将这些类文件交叉编译(具有许多优化)到dalvik VM格式。 请注意,也可能有一些.so文件也是应用程序代码,但是这些是在使用NDK时生成的。 你不能删除这个文件。 你可以改变它首先运行这个实用工具https://code.google.com/p/smali/这将产生smali代码从这个编译的dex这是有点类似于java,可以理解。; 您也可以使用工具ApkOneClick或ApkMultiTool从smali文件获取Java源代码,但这可能不是完美的,需要进一步修复。 当你改变你想要的代码时,你应该再次构buildclasses.dex,并把它们放到现有的zip / apk文件中。 请注意,现有的证书文件(META-INF)将不再有效,您将需要删除此文件夹并重新安装apk包,以便将其安装在手机或模拟器上。
有关更多信息,你也可以检查这个问题什么是Android的.dex文件?
这也是一个很好的使用现有工具反汇编dex文件的教程http://blog.vogella.com/2011/02/14/disassemble-android-dex
这个文件的作用是什么?
Android中classes.dex
的作用类似于普通Java中的JAR文件。 这是一个包含字节码的文件。 在Android情况下,字节码是Dalvik字节码,与Java字节码不同。
如果我们修改/删除相同的文件会影响apk?
如果您修改了classes.dex
,那么您正在修改程序行为,在重新打包后可能会也可能不会。 如果你删除classes.dex
,那么你的应用程序没有代码,你不应该期待它的工作。
apk中的.dex文件是由应用程序代码中的所有Java类组成的压缩文件。 它不同于jar文件。 jar文件是被隔离的.class文件的集合。 如果我们解压缩.jar,我们分别获得所有的类。 另一方面,.dex文件是由应用程序代码中的所有.class文件组成的单个文件。
代码编译stream程:多个.java文件 – >多个.class文件 – >单个.dex文件
.dex文件是由DVM执行的可执行文件… Dalvik虚拟机,这是Android的运行时。
.dex永远不会包含资源。 资源分别保存在.apk的/ res文件夹中