Android中的.dex文件是什么?

我有一些关于dex文件的问题

  • 什么是Android的dex文件?
  • 如何为Android的工作?
  • 他们如何用于debuggingAndroid应用程序?
  • 它们是否类似于java类文件?

我需要具体的信息,请帮助这个和任何真实的例子,欢迎!

 .dex file 

编译Android应用程序代码文件。

Android程序被编译成.dex(Dalvik Executable)文件,这些文件又被压缩到设备上的一个.apk文件中。 .dex文件可以由Android自动创build,通过翻译用Java编程语言编写的编译应用程序。

关于.dex文件:

Dalvik Virtual Machine (Android系统下的主力)最显着的特点之一是它不使用Java字节码。 相反,引入了一个名为DEX的本地格式,甚至连字节码指令都不像Java字节码指令一样。

 Compiled Android application code file. 

Android程序被编译成.dex (Dalvik Executable)文件,这些文件又被压缩到设备上的一个.apk文件中。 .dex文件可以通过自动翻译以Java编程语言编写的编译应用程序来创build。

Dex文件格式:

  1. File Header 2. String Table 3. Class List 4. Field Table 5. Method Table 6. Class Definition Table 7. Field List 8. Method List 9. Code Header 10. Local Variable List 

Android有关于Dalvik Executable Format.dex文件)的文档。 您可以在官方文档中find更多信息: Dex文件格式

.dex文件与java类文件类似,但是它们是在旧版Android版本的Dalkvik Virtual(DVM)下运行的,并且在安装时在设备上编译为具有较新Android版本的ART的本机代码。

您可以使用android-sdk中提供的dexdump工具decompile .dex。

还有一些反向工程技术.dex文件中创buildjar filejava class file文件。

dex文件是在Dalvik虚拟机上执行的文件。

Dalvik VM包含几个用于性能优化,validation和监控的function,其中之一是Dalvik Executable(DEX)

Java源代码由Java编译器编译为.class文件。 然后,Android SDK的一部分dx (dexer)工具将.class文件处理成包含Dalvik字节码的名为DEX的文件格式。 dx工具消除了类中存在的所有冗余信息。 在DEX中,应用程序的所有类都被打包成一个文件。 下表提供了JVM jar文件的代码大小与dex工具处理的文件之间的比较。

该表比较了系统库,Web浏览器应用程序和通用应用程序(闹钟应用程序)的代码大小。 在任何情况下,dex工具的代码大小减less了50%以上。

在这里输入图像说明

在标准Java环境中,Java代码中的每个类都会生成一个.class文件。 这意味着,如果Java源代码文件有一个公共类和两个匿名类,那么让我们说,对于事件处理,那么java编译器将创build总共三个.class文件。

Android平台上的编译步骤是一样的,从而导致多个.class文件。 但是.class文件生成后,使用“dx”工具将所有.class文件转换为单个.dex或Dalvik可执行文件。 这是在Dalvik虚拟机上执行的.dex文件。 .dex文件已针对内存使用进行了优化,devise主要由共享数据驱动。