您的位置:首页 > 其它

解决framework层修改导致无法开机

2012-11-09 13:34 393 查看
修复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)


在源码中定位到错误地点(DexPrepare.cpp中)

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中的验证代码,直接跳过签名验证
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐