使用言文605比较满意,但精简了不少系统的东西,现在想加回去,碰到带有odex的原版程序跑不起来的问题,经过抓取logcat,查看android源代码, 相应的odex分析,找到原因是此rom的/system/framework下的文件都是重新deodex成一个apk的,而原系统中framework下都是有odex,而且system/app目录下的odex文件都是依赖/system/framework目录下的odex文件,如果找不到就不能加载 ,log 如下
DexOpt: mismatch dep name: '/data/dalvik-cache/system@framework@core.jar@classes.dex' vs. '/system/framework/core.odex'
04-11 10:01:03.616 1320 1331 E dalvikvm: /system/app/ZoomService.apk odex has stale dependencies
04-11 10:01:03.616 1320 1331 E dalvikvm: odex source not available -- failing
04-11 10:01:03.647 1320 1331 I PackageManager: /system/app/WorkContacts.apk changed; collecting certs
04-11 10:01:03.694 1320 1331 I dalvikvm: DexOpt: mismatch dep name: '/data/dalvik-cache/system@framework@core.jar@classes.dex' vs. '/system/framework/core.odex'
04-11 10:01:03.694 1320 1331 E dalvikvm: /system/app/WorkContacts.apk odex has stale dependencies
04-11 10:01:03.694 1320 1331 E dalvikvm: odex source not available -- failing
04-11 10:01:03.796 1320 1322 D dalvikvm: GC_CONCURRENT freed 535K, 45% free 3846K/6983K, external 2357K/2773K, paused 2ms+6ms
04-11 10:01:03.811 1320 1331 I PackageManager: /system/app/WeatherWidget.apk changed; collecting certs
04-11 10:01:03.999 1320 1331 I dalvikvm: DexOpt: mismatch dep name: '/data/dalvik-cache/system@framework@core.jar@classes.dex' vs. '/system/framework/core.odex'
04-11 10:01:03.999 1320 1331 E dalvikvm: /system/app/WeatherWidget.apk odex has stale dependencies
04-11 10:01:03.999 1320 1331 E dalvikvm: odex source not available -- failing
04-11 10:01:04.014 1320 1331 I PackageManager: /system/app/Vvm.apk changed; collecting certs
04-11 10:01:04.233 1320 1322 D dalvikvm: GC_CONCURRENT freed 745K, 46% free 4022K/7367K, external 2357K/2773K, paused 2ms+19ms
04-11 10:01:04.272 1320 1331 I dalvikvm: DexOpt: mismatch dep name: '/data/dalvik-cache/system@framework@core.jar@classes.dex' vs. '/system/framework/core.odex'
04-11 10:01:04.272 1320 1331 E dalvikvm: /system/app/Vvm.apk odex has stale dependencies
04-11 10:01:04.272 1320 1331 E dalvikvm: odex source not available -- failing
源代码地址
androidxref_com/source/xref/dalvik/vm/JarFile.cpp
androidxref_com/source/xref/dalvik/vm/analysis/DexPrepare.cpp#dvmCheckOptHeaderAndDependencies
odex里依赖的framework文件列表
/system/framework/core.odex
/system/framework/bouncycastle.odex
/system/framework/ext.odex
/system/framework/framework.odex
/system/framework/android.policy.odex
/system/framework/services.odex
/system/framework/core-junit.odex
/system/framework/com.motorola.android.frameworks.odex
/system/framework/com.motorola.android.widget.odex
所以建议各位大大做精简rom时, framework目录下的东东最好odex化,即使deodex过后,也要再odex