我对 dex文件
有一些疑问dex
文件?我需要具体的信息,请帮助,欢迎任何真实的例子!
答案 0 :(得分:194)
关于.dex文件:
Dalvik Virtual Machine
(Android系统下的主力)最显着的特点之一是它不使用Java字节码。相反,引入了一种名为DEX的本地格式,甚至字节码指令也与Java字节码指令相同。
Compiled Android application code file.
Android程序被编译为.dex
(Dalvik可执行文件)文件,这些文件又被压缩到设备上的单个.apk
文件中。可以通过自动转换用Java编程语言编写的编译应用程序来创建.dex
个文件。
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 文件)的文档。您可以在官方文档中找到更多信息:Dex File Format
.dex
文件类似于java类文件,但它们是在较旧的Android版本的Dalkvik虚拟机(DVM)下运行,并在设备上安装时编译为在较新的Android版本上使用ART的本机代码
您可以使用android-sdk中提供的decompile
工具dexdump
。索引。
还有一些逆向工程技术可以从jar file
文件中生成java class file
或.dex
。
答案 1 :(得分:88)
.dex file
已编译的Android应用程序代码文件。
Android程序被编译成.dex(Dalvik可执行文件)文件,这些文件又被压缩成设备上的单个.apk文件。 .dex文件可以由Android自动创建,通过翻译用Java编程语言编写的编译应用程序。
答案 2 :(得分:74)
dex
文件是在Dalvik VM上执行的文件。
Dalvik VM包含多项性能优化,验证和监控功能,其中一项功能是 Dalvik可执行文件(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 VM上执行的.dex
文件。 .dex
文件已针对内存使用进行了优化,设计主要由共享数据驱动。