例如,我们在 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/