例如,我们在/system/app
下有phone.apk
和phone.odex
。根据一些非官方文档,phone.odex
用于加快加载应用程序的过程。但是,为什么我们不直接将 phone.odex
放在 /data/dalvik
下呢?
更奇怪的是:在/data/dalvik
下存在一个名为system@app@phone@classes.dex
的文件,当应用加载时,是哪个优先加载,/system/app/phone.odex
or /data/dalvik/system@app@phone@classes.dex
?
把phone.odex
放在/system/app
下是不是完全多余了?
最佳答案
/system/app
目录在普通(非开发人员)设备上是只读的,并且仅在系统收到更新时更新。 /system/app/*.odex
的要点是 .odex 文件可以作为系统更新的一部分提供,因此不必在第一次更新后启动时生成,并且不会占用/data 分区上的空间。
如果 .apk 和 .odex 文件不同步,系统无法覆盖 /system/app
中的 .odex,并会尝试在 中生成正确的版本>/数据/达尔维克缓存
。通常这会失败,因为当 .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/