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文件夹中