目录:
克拉克 写道,
odex和deodex究竟意味着什么呢? 我看到几乎每个自定义ROM线程中提到的术语,找不到我能理解的答案。 我希望Android Central可以提供帮助。
令人敬畏的问题,克拉克。 我认为我们可以回答大多数人都会理解的问题。 正如您所注意到的,您在许多论坛帖子中都看到了关于自定义ROM或手机和平板电脑各种黑客的术语odex和deodexed。 开发人员需要做很多工作才能从“库存”ROM中创建deodexed ROM,例如OEM和Google都提供的ROM。
首先,我们需要知道odex文件是什么。 它是应用程序(.apk文件)的一部分,该应用程序已预先构建,以使Dalvik虚拟机使用更少的资源加载它。 如果您查看Android手机或平板电脑上的/ system / app /文件夹,您会发现几乎每个应用程序都有.apk文件和.odex文件。 这些文件通过Dalvik VM协同工作,使应用程序在我们的设备上运行。 让我们在休息后打破一切。
Dalvik VM
Dalvik VM是Android系统的重要组成部分。 它是允许用Java编写的第三方应用程序在手机或平板电脑上运行的组件。 系统本身启动DVM,当您按下启动应用程序时,它将开始工作。 它获取.apk文件中的数据并使用即时(JIT)编译器,它将信息构建到程序中,然后运行它。 让部分代码已经优化并构建到DVM可以运行的文件中,这使得流程更快,并且使用更少的资源。 这就是odex文件。
Odex文件
您在系统文件夹中看到的odex文件是由编写和构建应用程序本身的人员构建的。 Android应用程序是用Java编写的,然后转换为字节码。 然后,它们从标准的Java虚拟机兼容的.class文件转换为Dalvik VM可以读取的特殊类型的文件。 这些被称为.dex文件。 当这些.dex文件放在代码的其余部分之外(在.apk文件中)时,您将获得一个独立的.odex文件。
独立的.odex文件有很多充分的理由。 它们通过在系统启动时构建Dalvik缓存,使启动时间更快(尤其是第一次启动)。 他们还尽可能通过指向Android框架来节省一些空间,并允许应用程序开发人员优化他或她的程序。 但是拥有seperate.odex文件并不是非常黑客友好。
Deodexing
Deodexing文件意味着单独使用.odex文件和.apk文件,并重建它们,以便所有这些预构建的应用程序信息都包含在.apk文件中而不是它自己的文件中。 Dalvik VM的预构建数据现在位于.apk文件中的classes.dex文件中,如上图所示。 这使得.apk文件变得更大,并且在系统启动时无法预先加载它们。 但是黑客和他们可以对它们进行反向设计。
将程序的所有代码和数据放在一个位置,您可以使用工具“取消构建”应用程序并根据需要进行编辑。 这就是为“库存”ROM制作电池百分比模型等主题和调整的方法。 在开发人员进行更改后,他们会重建.apk文件,并且可以运行更改。 这不会影响系统的任何其他部分,因为没有任何代码或数据与其他应用程序共享。
你应该选择哪个?
这真的取决于你,以及你的需求,但我建议尽可能闪一个deodex版本。 是的,odex ROM启动速度更快,但是当Dalvik VM预先缓存所有系统应用程序时,您真的只在第一次启动时注意到它。 您还可以使用odex文件节省大量空间,但是如果您的手机或平板电脑使用单独的应用程序分区,则此空间全部位于系统分区中,并且不会为更多应用提供空间。 使用现代手机及其多核处理器和大量RAM,您甚至不会注意到任何更快的应用程序加载时间。
如果您想要更改状态栏或主题TouchWiz或Sense,您需要一个deodex ROM。 您还需要一个deodex ROM来执行一些非常酷的深度系统调整,例如更改设置菜单或编辑框架。 简而言之,如果您已经解锁了引导加载程序并且已经准备就绪,并且您已准备好使用自定义ROM,那么选择deodexed版本可能是最佳选择。 你会惊讶于这些疯狂的开发人员可以想出的东西,你肯定会遇到一些你想要自己尝试的东西。