例如,我们在phone.apk
下有phone.odex
和/system/app
。根据一些非官方文档,phone.odex
用于加快加载应用程序的过程。但是,为什么我们不只是将phone.odex
放在/data/dalvik
下?
更奇怪的是:在system@app@phone@classes.dex
下有一个名为/data/dalvik
的文件,当应用加载时,哪一个优先加载,/system/app/phone.odex
或/data/dalvik/system@app@phone@classes.dex
?
将phone.odex
放在/system/app
下
答案 0 :(得分:5)
/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不匹配。