关于odex在art模式上的意义的理解

ODEX是Android系统中提升软件加载和开机速度的优化文件,即使在ART模式下,它仍能减少安装时间并优化用户体验。尽管ART模式在运行时提供了更快的速度,但安装大型APK时的卡顿和长时间等待是其缺点。使用ODEX可以在一定程度上解决这个问题,虽然会增加存储占用。因此,结合ART和ODEX的优化对于提升Android设备的性能和用户体验具有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始我的理解之前,先来说说今天看到的高手在做ROM的时候发表的一些见解。


华丽丽的分割线

-------------------------------------------------------------------------------------------------------------------------

什么是ODEX?
Android应用程序中有一个叫做classes.dex的文件,这是Java源码经过ADT的编译后会转换出来的。
它是Android系统中可以在Dalvik虚拟机上直接运行的文件格式,而odex则是由classes.dex生成的。

ODEX优化有什么用?
ODEX的用途是分离程序资源和可执行文件,达到加快软件加载速度和开机速度的目的。
一般来说,厂商的原厂系统都会为自己的ROM做ODEX优化处理以提高性能。
而第三方民间ROM(除魔趣之外)几乎都没有做,实在搞不懂这是什么道理- -!

棒棒糖与ART带来的疑问?
很多人会有疑问,Android 5.0开始,默认已经使用ART,弃用Dalvik了。
应用程序会在安装时被编译成OAT文件,(ART上运行的格式)ODEX还有什么用呢?
这里我们引用Google权威的回答:

Dex file compilation uses a tool called dex2oat and takes more time than dexopt. The increase in time varies, but 2-3x increases in compile time are not unusual. For example, apps that typically take a second to install using dexopt might take 2-3 seconds.

这里我来解释下,DEX转换成OAT的这个过程是在用户安装程序或是刷入ROM、OTA更新后首次启动时执行的。
按照Google的说法,相比做过ODEX优化,未做过优化的DEX转换成OAT要话费更长的时间,比如2-3倍。
比如安装一个odex优化过的程序假设需要1秒钟,未做过优化的程序就需要2~3秒。
由此可见,虽然dalvik被弃用了,但ODEX预优化在Android棒棒糖上依旧拥有显著的优化效果。
首先ODEX优化不仅仅只是针对应用程序,还会对内核镜像、Jar库文件等进行优化。
其次,资源和可执行文件分离带来的性能提升无论是运行在ART还是Dalvik,都是有效的!

关于魔趣ODEX优化:
魔趣只为正式版本和历史版本启用了ODEX优化,以进一步加强正式版和历史版的稳定、优秀地位。
当初Android 5.0.2并不是一个较为稳定的版本,我们在测试MK50.2中发现ODEX优化后存在一些奇怪的BUG。
比如一加的双击唤醒、手势等功能莫名其妙因为ODEX优化而失灵,所以我们临时取消了这一优化。
而现在,随着Android 5.1.1的发布以及MK51.1的日益稳定,我们将在下个版本让这一优化重新回到魔趣。
使魔趣能够继续为大家带来一些其它民间ROM上绝无仅有的优化。(除了ODEX优化技术,魔趣还有诸如PNG优化等特色)

--------------------------------------------------------------------------------------------------------------------------------

以上链接来自马丁龙猪的mokee论坛,当然,这个是他的见解,而我所作的,就是在他的见解的基础上,再说说我自己的看法,可以说是更加的通俗的。原文链接


当然,有人会说,做了art模式之后,在用odex来优化是没有必要的,而在马丁龙猪的帖子上,引用了谷歌的说明,就是说,在安装apk文件的时候,做了优化和没有做优化的apk,之间的安装速度是相差了大约一半的时间的,而关键性的问题来了。

我们在使用android手机的时候,在处于art模式的操作下,在安装应用时,都会有一种莫名的感觉,就是无论多强大的手机,都会卡顿,其实,这就是art模式所带来的不便,因为art模式会转化apk的代码,让运行时,更加的快速,而不用去依赖dvm虚拟机,这是很有好处的,但是,也带来了一个不小的问题,这就是apk安装包很大的时候,有很多代码或者资源文件需要重新去转换,你无法想象得到,当你使用第一次使用apk模式,而且在应用商店去把大量的apk下载好等待安装的时候,这个等待的过程是多么的漫长啊,是的,dvm转art模式的时候,等待的时间也是很长很卡的。所以,这里,马丁龙猪给我们的提示信息正好告诉我们,使用odex,可以正确去优化它们,当然,也是有相对的坏处的,那就是占用空间,art模式转化后会变dvm模式下运行的程序占用的空间更大。所以说,技术可能会是双刃剑,在google调整了这么些年后,android总算有点粘手了,但是还是会有各种问题和各种优化,这个问题也是手机ROM制作者们更应该去考虑的问题,不过我觉得,制作odex的机制还是很有必要的,毕竟为了安装的时候让手机还能继续用,不那么卡,这也是一种用户体验的表现啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值