classes.dex文件在apk文件中的作用

Jai*_*dra 48 android apk

用winrar打开apk文件时(s/w打开压缩文件).我在apk中收到了一堆文件.其中classes.dex是一个.我的问题是这个文件的作用是什么,如果我们修改/删除相同的文件会影响apk吗?

Sah*_* Mj 58

要制作APK文件,首先编译Android程序,然后将其所有部分打包到一个文件中.这包含所有程序的代码(这些是.dex files),资源,资产,证书和清单文件.

程序通常是编写Java和编译的bytecode.然后在安装到设备之前Java Virtual Machine-compatible .class files将它们转换为Dalvik-compatible .dex(Dalvik可执行文件)文件.紧凑的Dalvik可执行文件格式适用于受内存和处理器速度限制的系统.

  • classes.dex:以Dalvik虚拟机可理解的dex文件格式编译的类

由于.dex文件包含APK资源,因此对这些文件的任何编辑都将直接影响APK.

  • 好答案.你碰巧知道为什么只有一个classes.dex有多个.class文件?是否应该通过dexing进行优化,或者它只是像.jar文件那样的包? (2认同)
  • 为什么我有多个这个文件?classes2.dex、classes3.dex 等。 (2认同)

BBd*_*dev 9

.dex文件 编译的Android应用程序代码文件.

来自Android API GUIDES

Android程序被编译成.dex (Dalvik Executable)文件,然后将文件压缩成设备上的单个.apk文件.可以通过自动转换用Java编程语言编写的编译应用程序来创建.dex文件.

是的,如果您将删除这些文件,它将影响APK.


Igo*_*daš 6

classes.dex本质上是所有应用程序逻辑。给定应用程序的代码用Java编写,然后编译为类文件,然后将这些类文件交叉编译(经过很多优化)为dalvik VM格式。请注意,可能还存在一些.so文件,它们也是应用程序代码,但是这些文件是在使用NDK时生成的。您无法删除此文件。但是,您可以通过先运行此实用程序https://github.com/JesusFreke/smali来更改它它将从此编译的dex生成smali代码,该代码有点类似于java,并且可以理解。您也可以使用工具ApkOneClick或ApkMultiTool从smali文件中获取Java源代码,但是这些工具可能并不完美,需要进一步修复。更改代码后,您应该再次构建classes.dex并将它们放入现有的zip / apk文件中。请注意,那么现有的证书文件(META-INF)将不再有效,您将需要删除此文件夹并注销apk软件包才能在电话或仿真器上安装它。

有关更多信息,您也可以检查此问题。Android中的.dex文件是什么?

这也是关于使用现有工具反汇编dex文件的很棒的教程http://blog.vogella.com/2011/02/14/disassemble-android-dex


Cyk*_*ker 5

这个文件的作用是什么?

Android 中的作用classes.dex类似于普通 Java 中的 JAR 文件。它是一个包含字节码的文件。在Android情况下,字节码是Dalvik字节码,它与Java字节码不同。

如果我们修改/删除同一个文件会影响apk吗?

如果您修改classes.dex,则您正在修改程序行为,这在重新打包后可能会也可能不会起作用。如果您删除classes.dex,那么您的应用程序就没有代码,您不应该指望它能够工作。