现在的位置: 首页谷歌(Google)>正文
Android平台的Odexed与Deodexed是什么?
发表于6年前 谷歌(Google) 暂无评论

作为一位Android新用户,有着多数的术语超越了我们的理解。对于没有接触过Linux核心操作系统的朋友更是如此,它让我们在众多的开发者社区碰到疑问。比如,初触Android设备,我们不知道Terminal(终端),因此,我们不能用它来诊断一些问题,似乎它对我们没有任何的用处。想必,一些术语的问题应困扰着许多的新手,甚至是已使用过Android设备一段时间的用户

经常地,当我们进行安装第三方自定义的系统Rom固件时,我们会偶然看见像DeOdexed、Odexed等一些专业的术语词,甚至在安装或更新或升级主题时也会碰到。我们不得其解,这些术语到底暗示着什么,它们具体是什么呢?对于开发者们,他们常在定制的Rom时附上说明说“这个Rom已DeOdexed”或其他相关说明。即使对于一些有使用过Android设备的部分用户而,他们也会有点模糊的概念

在这里,我们尝试着来解释下或认识下什么是Odexed与DeOdexed:

  • 什么是一个Odex文件?
         在Android平台的文件系统,应用程序都有着一个.apk格式的整合包(我们简称之为应用程序包),这些应用程序包,或APK应用包含着某一.odex格式的文件。这些Odex文件实际上集合着应用程序的一部分功能,它们使应用程序在启动时最佳化,以使启动过程的速度加快,因此,它们作为应用程序的预装载的部分。从另外一方面看,它也使得这些应用程序受攻击变得更加困难,因为它们已作为代码的一部分在执行前被扩展到另一个位置
  • 什么是DeOdex呢?
         DeOdex过程是在一个确信的方法上主要地重新整合这些APK应用,以至它们被重新组合到classes.dex文件。这样做之后,所有的应用程序包的琐散文件都被放在一起,从而避免一些修改的APK应用与一些分离的Odexed部分相冲突
         概括而讲,Deodexed系统Rom固件或APK应用已使所有的应用程序包放在一个地方,以至可以更容易地修改它们。因为没有了来自于任何的外围位置琐散的代码,自定义的系统Rom固件或APK应用已DeOdexed到更加整合
  • Odex与DeOdex是怎样的运行(工作)呢?
         我们知道,Android操作系统使用一个基于Jave的虚拟机运行应用程序,这个虚拟机叫做Dalvik Virtual Machine(Dalvik虚拟机)。一个deodexed或.dex格式文件包含了因为程序由这个Dalvik虚拟机引起的缓存(常安装第三方系统Rom固件的用户应常注意到定制者要求执行清除Dalvik Cache“Dalvik 缓存”的操作),它储存在APK应用的里面。一个.odex格式的文件,从另外一方面思考,它是相同的.dex文件的一个优化的版本,它储存在相对的位置应用到APK应用。Android默认应用这个技术到所有的系统应用程序。当Android操作系统启动时,因为Dalvik虚拟机而生的Dalvik Cache(Dalvik 缓存)应用这些.odex格式的文件,以使操作系统在高水平的情况下加载,因此,它带来了启动速度的提升
         通过DeOdex这些APK应用,开发者们实际上放置.odex格式的文件到它们各自的APK应用程序包里面。因为所有的代码现在包含在APK应用自身内,它尽可能地使得修改任何的应用程序包没有同操作系统的执行环境产生冲突
  • Odexed与DeOdexed更多的思考
         DeOdex过程最重要的特征即是更多的修改权。这在自定义系统Rom固件与主题中被大范围使用,一位开发者定制自定义的系统Rom固件基本首先选择DeOdex系统Rom整合包。因为这不仅仅使得他可以修改多数的APK应用,也可以使得安装自定义的主题更为方便
         从另一个角度来认识,因为.odex格式的文件起着加快建立Dalvik Cache(Dalvik 缓存)的作用,移队它们将意味着加长初始的启动时间。尽管如此,这仅仅是在执行DeOdex过程之后的最开始的阶段成立,因为缓存将伴随着应用程序的使用一直增加,但是,如果因为某些原因要执行清除Dalvik Cache(Dalvik 缓存)的操作,那么将会再次出现更长的启动时间
         对于众多的用户,我们更重要是打造漂亮的主题,而Android的主题也以APK应用程序包的方式出现,如果我们要修改它,我们总是需要选择一个Deodexed的第三方自定义的相关系统Rom固件文件

说明:

  • 教程仅作一般性的认识,如果有更深层次的相关知识,如果可以的话,请与我们分享!让我们一起探讨相关知识

给我留言

/ 快捷键:Ctrl+Enter