例如,我们在 phone.apk 下有 phone.odex/system/app 。根据一些非官方文档,phone.odex 用于加快加载应用程序的过程。但是,为什么我们不只是将 phone.odex 放在 /data/dalvik 之下呢?

更奇怪的是: system@app@[email protected] 下存在一个名为 /data/dalvik 的文件,应用加载时,哪个优先加载, /system/app/phone.odex 还是 /data/dalvik/system@app@[email protected]

phone.odex 放在 /system/app 下是完全多余的吗?

最佳答案

/system/app 目录在普通(非开发者)设备上是只读的,只有在系统收到更新时才会更新。 /system/app/*.odex 的要点是 .odex 文件可以作为系统更新的一部分提供,因此它不必在第一次更新后启动时生成,也不会占用/data 分区上的空间。

如果 .apk 和 .odex 文件不同步,系统将无法覆盖 /system/app 中的 .odex ,并将尝试在 /data/dalvik-cache 中生成正确的版本。通常这会失败,因为当 .apk 和 .odex 成对交付时,.apk 不包含 .dex 文件(这样做是多余的)。
/system/app 中的 .odex 首先被扫描,因此它本质上具有优先权。

预计不会找到冗余的 .odex,这表明设备在某些时候有一个 phone.apk,其中包含 .dex 并且与 .odex 不匹配。

关于android - 即使我们已经有了/data/dalvik-cache,为什么还要将*.odex 文件放在/system/app 下?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30452182/

10-11 18:16