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

修复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中的验证代码,直接跳过签名验证

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值