我有关于 dex 文件 的一些问题
dex
文件在 Android 中是什么?dex
在 Android 中是如何工作的?dex
在调试 Android 应用时如何使用?dex
文件和 java 类文件类似吗?
请提供具体的信息,欢迎提供任何实际示例!
我有关于 dex 文件 的一些问题
dex
文件在 Android 中是什么?dex
在 Android 中是如何工作的?dex
在调试 Android 应用时如何使用?dex
文件和 java 类文件类似吗?请提供具体的信息,欢迎提供任何实际示例!
关于 .dex 文件:
Dalvik
虚拟机(Android 系统中的核心)最显著的特点之一是它不使用 Java 字节码。相反,使用了一种自定义格式称为 DEX
,即使字节码指令也与 Java 字节码指令不同。
编译后的 Android 应用代码文件
Android 程序被编译成 .dex
(Dalvik 可执行)文件,然后在设备上被压缩为单个 .apk
文件。 .dex
文件可以通过自动翻译使用 Java 编程语言编写的已编译应用程序来创建。
Dex 文件格式:
Android 对 DVM
可执行格式(.dex 文件)有文档说明。您可以在官方文档页面找到更多信息:Dex 文件格式
.dex
文件类似于 Java 类文件,但在旧版 Android 上在 Dalvik 虚拟机(DVM)下运行,并且在新版 Android 上在设备上安装时使用 ART 编译为本机代码。
您可以使用提供在 android-sdk 中的 dexdump
工具来反编译 .dex 文件。
还有一些反向工程技术可用于将 .dex
文件制作成 jar 文件
或 java 类文件
。
dexdump
不是反编译器而是反汇编器。 - genghiskhandex
文件是在Dalvik虚拟机上执行的文件。
Dalvik VM包含多项性能优化、验证和监控功能,其中之一是Dalvik Executable (DEX)。
Java源代码由Java编译器编译成.class
文件。然后,Android SDK的dx
(dexer)工具会处理.class
文件,将其转换为名为DEX
的文件格式,其中包含Dalvik字节码。dx
工具会删除类中存在的所有冗余信息。在DEX
中,应用程序的所有类都被打包到一个文件中。以下表格比较了JVM jar文件和dex
工具处理的文件的代码大小。
该表格比较了系统库、Web浏览器应用程序和通用目的应用程序(闹钟应用程序)的代码大小。在所有情况下,dex工具将代码大小减少了50%以上。
在标准的Java环境中,Java代码中的每个类都会生成一个.class
文件。这意味着,如果Java源代码文件有一个公共类和两个匿名类(例如用于事件处理),则Java编译器将总共创建三个.class
文件。
在Android平台上,编译步骤是相同的,因此会生成多个.class
文件。但是,在生成.class
文件之后,使用“dx”工具将所有.class
文件转换为单个.dex
或Dalvik Executable文件。执行的是.dex
文件。.dex
文件已经针对内存使用进行了优化,其设计主要由数据共享驱动。
.dex file
已编译的Android应用程序代码文件。
Android程序被编译成.dex(Dalvik可执行)文件,然后在设备上压缩成单个.apk文件。.dex文件可以被Android自动创建,通过将用Java编写的已编译应用程序进行翻译。