什么是dex文件

 我来答
RenKwang
高粉答主

2020-05-07 · 专注解答想答的问题们
RenKwang
采纳数:172 获赞数:33036

向TA提问 私信TA
展开全部

dex文件是Android系统的可执行文件,包含应用程序的全部操作指令以及运行时数据。

由于dalvik是一种针对嵌入式设备而特殊设计的java虚拟机,所以dex文件与标准的class文件在结构设计上有着本质的区别。

当java程序编译成class后,还需要使用dex工具将所有的class文件整合到一个dex文件,目的是其中各个类能够共享数据,在一定程度上降低了冗余,同时也是文件结构更加经凑,dex文件是传统jar文件大小的50%左右。

dex将原来class每个文件都有的共有信息合成一体,这样减少了class的冗余。

从宏观上来说dex的文件结果很简单,实际上是由多个不同结构的数据体以首尾相接的方式拼接而成。

扩展资料:

Android的系统架构和其操作系统一样,采用了分层的架构。

从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。

dex文件的作用:

dex文件的作用是记录整个工程(通常是一个Android工程)的所有类文件的信息。

dex文件的结构:

8位字节的二进制流文件;各个数据紧密排列,无间隙,减少了文件体积,加快加载速度;整个工程的类信息都存放在一个dex文件中(不考虑dex分包的情况下);同样地,可以通过010Editor来查看dex文件信息。

参考资料:百度百科-Android

123
2018-06-28 · 知道合伙人数码行家
123
知道合伙人数码行家
采纳数:12960 获赞数:94615
000000000000

向TA提问 私信TA
展开全部
  dex是应用安装时生成的虚拟机可执行二进制文件,如果应用还存在,删除了下次手机开机时还会再次生成,卸载软件时会同时删除dex文件。所以没有必要手动删除dex文件。
  对于Android DEX文件进行优化,需要注意的一点是DEX文件的结构是紧凑的,但是我们还是要想方设法的进行提高程序的运行速度,我们就仍然需要对DEX文件进行进一步优化。
  调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的每一个域 验证DEX文件中的所有类 对一些特定的类进行优化,对方法里的操作码进行优化 。优化后的文件大小会有所增加,应该是原Android DEX文件的1-4倍。 优化发生的时机有两个:对于预置应用,可以在系统编译后,生成优化文件,以ODEX结尾。
  这样在发布时除APK文件(不包含DEX)以外,还有一个相应的Android DEX文件;对于非预置应用,包含在APK文件里的DEX文件会在运行时被优化,优化后的文件将被保存在缓存中。
  每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
折隆白1973
推荐于2017-09-13 · 超过57用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:112万
展开全部
这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。 当Android启动时,DalvikVM监视所有的程序(APK文件)和框架,并且为他们创建一个依存关系树。DalvikVM通过这个依存关系树来为每个程序优化代码并存储在Dalvik缓存中。这样,所有程序在运行时都会使用优化过的代码。这就是当你刷一个新的ROM时,有时候第一次启动时间非常非常长的原因。当一个程序(或者框架库)发生变更,DalvikVM将会重新优化代码并且再次将其存在缓存中。在cache/dalvik- cache是存放system上的程序生成的dex文件,而data/dalvik-cache则是存放data/app生成的dex文件。 准备工作:用Recovery进行一个备份,预防出现意外,不能开机。 请确定你的电脑可以正常连接手机调试模式。 请确定你的system有10-20M空余。 说明:Android系统中运行的程序包主要分framework,system/app,data/app,三个路径,开机的时候启动内核后,就会逐个启动framework里的jar框架程序,再启动system/app的开机自启程序。 如果你想把整个ROM都odex化,就必须先将framework的先做,因为在odex过程中,需要依赖framework进行。而且在 odex framework时,每个文件都要严格按照顺序,否则不能开机。如果你在其他app做了odex,Sorry,你不能odex framework。 下载附件解压,执行odex.bat,选在你想要的操作,如果你想将整个ROM odex化,必须先选择framework,然后system,data,如果你不想odex framework,可以直接跳过,但是你以后都不能odex framework。 【更新】odex framework更新自动删除dex文件。 这个脚本更新可以重复使用,也就是你odex一遍后,自己添加了apk或者二级框架程序(jar,譬如google.map.jar),可以使用这个脚本单独对这些odex,不会影响其他已经odex的程序。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llscp
2015-08-20 · 超过16用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:27.7万
展开全部
在Android系统中,dex文件是可以直接在Dalvik虚拟机中加载运行的文件。通过ADT,经过复杂的编译,可以把java源代码转换为dex文 件。 那么这个文件的格式是什么样的呢?为什么Android不直接使用class文件,而采用这个不一样文件呢?其实它是针对嵌入式系统优化的结 果,Dalvik虚拟机的指令码并不是标准的Java虚拟机指令码,而是使用了自己独有的一套指令集。如果有自己的编译系统,可以不生成class文件, 直接生成dex文件。dex文件中共用了很多类名称、常量字符串,使它的体积比较小,运行效率也比较高。但归根到底,Dalvik还是基于寄存器的虚拟机 的一个实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
777nt
2015-08-28 · 超过19用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:18.9万
展开全部
手机上用的(类似EXE),给好评哦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式