Android 的 ROM 中正常的软件都是 apk 内包含有一个 classes.dex,但也有时会没有(比如 MIUI 等),却有很多 .odex 文件,相对于 apk 中的 .dex 文件而言,这个 .odex 有什么作用呢?
首先分析一下 apk 文件的安装过程。安装 apk 包,会在 /data/app 目录复制一份安装包,在 /data/dalvik-cache 目录放一个解压出来的 classes.dex,如果有 .so 文件,还要复制到对应的文件夹。但是,如果把一个 apk 分解为 apk + odex,情况就大大不同了,这时完全可以把 apk 内的 lib 文件夹和 classes.dex 文件删掉,然后签名,配合 odex 一起使用,当然 so 文件也不能丢。所以:正常的 apk 包 = 原包 + classes.dex + so
分解后的apk 包 = 分解包 + odex + so
关于 .odex 文件
.odex 是 Android 上的应用程序 apk 中提取出来的文件,即将 apk 中的 classes.dex 文件通过 dex 优化过程将其优化生成一个 .odex 文件单独存放,原 apk 中的 classes.dex 文件可删除或保留。

这样做可以加快软件的启动速度,预先提取,减少对 RAM 的占用,因为没有 odex 的话,系统要从 apk 包中提取 dex 再运行。
odex 化
简单说,原本系统恢复出厂设置后第一次开机需要先提取 classes.dex 出来,而 odex 化就是现在你提前把它提取出来了,系统启动或者程序运行加快的原因也就在此。提取后可以把 apk 内的 .dex 删除,以达到节省空间的目的。如果不 odex,那么系统还是会自动提

本文介绍了Android中odex文件的作用,它是从apk的classes.dex优化生成的,用于加速应用启动和减少RAM占用。odex化可以提高系统启动和程序运行速度,但不便于ROM破解和应用更新。deodex化则是将odex转换回apk中的classes.dex。官方ROM通常采用odex化,而自定义ROM可能选择deodex化。Android 8.0及更高版本的odex化方法不在本文讨论范围内。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



