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