修复framework代码之后,push编译好的framework.jar和相应的odex文件,发现开机失败,一直在android界面循环
而且不停打dismatch dep :
I/dalvikvm( 375): DexOpt: mismatch dep signature for '/system/framework/framework.odex' E/dalvikvm( 375): /system/framework/android.policy.jar odex has stale dependencies I/dalvikvm( 375): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory D/dalvikvm( 375): Unable to process classpath element '/system/framework/android.policy.jar' I/dalvikvm( 375): DexOpt: mismatch dep signature for '/system/framework/framework.odex' E/dalvikvm( 375): /system/framework/services.jar odex has stale dependencies I/dalvikvm( 375): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory D/dalvikvm( 375): Unable to process classpath element '/system/framework/services.jar' I/dalvikvm( 375): DexOpt: mismatch dep signature for '/system/framework/framework.odex' E/dalvikvm( 375): /system/framework/apache-xml.jar odex has stale dependencies I/dalvikvm( 375): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory D/dalvikvm( 375): Unable to process classpath element '/system/framework/apache-xml.jar' I/dalvikvm( 375): DexOpt: mismatch dep signature for '/system/framework/framework.odex' E/dalvikvm( 375): /system/framework/filterfw.jar odex has stale dependencies I/dalvikvm( 375): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory D/dalvikvm( 375): Unable to process classpath element '/system/framework/filterfw.jar' E/JNIHelp ( 375): Native registration unable to find class 'com/android/server/Watchdog', aborting F/libc ( 375): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)
if (len != storedStrLen || strcmp(cacheFileName, (const char*) ptr) != 0) { LOGI("DexOpt: mismatch dep name: '%s' vs. '%s'", cacheFileName, ptr); goto bail; } ptr += storedStrLen; if (memcmp(signature, ptr, kSHA1DigestLen) != 0) { LOGI("DexOpt: mismatch dep signature for '%s'", cacheFileName); goto bail; } ptr += kSHA1DigestLen; LOGV("DexOpt: dep match on '%s'", cacheFileName); numDeps--;
如此看来只有两种解决办法:
1.用make snod命令重新编译system.img,这样编译出来的system中的架包之间没有依赖
2.修改DexPrepare.cpp中的验证代码,直接跳过签名验证