APK Odex化的概念和意义

什么是Odex

Odex是安卓上的应用程序apk中提取出来的可运行文件,是通过apk安装包的中的dex优化过的,再把apk包里的dex文件删除。这样做可以加快软件的启动速度,预先提取,减少对RAM的占用。没有odex的话,系统要从apk包中提取dex再运行。

什么是dalvik-cache?
当Android启动时,DalvikVM监视所有的程序(APK文件)和框架,并且为他们创建一个依存关系树。DalvikVM通过这个依存关系树来为每个程序优化代码并存储在Dalvik缓存中。这样,所有程序在运行时都会使用优化过的代码。这就是ROM第一次启动时间比较长的原因。当一个程序(或者框架库)发生变更,DalvikVM将会重新优化代码并且再次将其存在缓存中。cache/dalvik-cache是存放system上的程序生成的dex文件,而data/dalvik-cache则是存放data/app生成的dex文件。

所谓Odex化,是将由android软件中的classes.dex生成的文件预先提取出来,作用是能加快软件加载速度和开机速度。不过Odex也有缺点,那就是有时候加刷东西会出现问题。简单说,原本系统每次执行APK都需要先提取一部分出来,而Odex化就是提前把它提取出来了,系统启动或者程序运行加快的原因也就在此。由于提取Odex会占用一部分存储空间,所以做Odex化的时候需要考虑空间方面的问题。

Odex的效果

Odex化后系统启动和程序运行速度大大提高,稳定性不变。因此推荐做Odex化。
一般来说官方rom都是odex化的rom(含Odex文件),而定制rom大部分都是deodex化的(无odex文件)。两者各有优劣。官方rom大部分apk都有对应的.odex文件,而deodex化的rom里面每个apk只有一个,把.odex转换成classes.dex放到apk包里面了。所以 odex rom的.apk+.odex=deodex化rom的1个.apk (简单来说就是一个合并的过程)。

Odex的优点

  1. 刷完机首次进入系统的时间会缩短一些,文件的运行速度也有所提升。
  2. APK文件不能单独安装,并且如果反编译APK文件,一般也只能得到资源文件。可以说是起到一定的保护作用,避免被肆意修改和使用。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的。
  3. 会增加一些可安装应用的空间,虽然不是很多。

Odex的缺点

  1. 不方便修改ROM以及文件本身。
  2. 增加ROM包的体积,虽然不是很多。
  3. 当升级某个被Odex的应用后,这个应用可能会出现故障,最常见的就是FC。
  4. 从其它ROM中提取的Odex程序,不能直接用于当前的手机系统,也就是说,机型、手机版本要一一对应。症状为替换后,无法显示应用。

现在的定制rom之所以大都是deodex化的原因在于:

  1. 可以适当减小文件的体积,节省rom空间;
  2. 方便定制者对rom进行个性化定制和移植;
  3. apk相对容易反编译和修改,而odex先要解包成smali然后才能生成classes.dex。如果要重新生成odex,还要用dexopt-wrapper,比较麻烦。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值