解决framework层修改导致无法开机
2012-11-09 13:34
393 查看
修复framework代码之后,push编译好的framework.jar和相应的odex文件,发现开机失败,一直在android界面循环
而且不停打dismatch dep :
在源码中定位到错误地点(DexPrepare.cpp中)
看来是依赖签名匹配失败.
如此看来只有两种解决办法:
1.用make snod命令重新编译system.img,这样编译出来的system中的架包之间没有依赖
2.修改DexPrepare.cpp中的验证代码,直接跳过签名验证
而且不停打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中的验证代码,直接跳过签名验证
相关文章推荐
- linux修改了/etc/profile环境变量导致开机无法登陆的解决办法
- Ubuntu由于修改etc/profile文件导致开机无法登陆问题解决办法(仅供参考)
- 某个开机自启的服务无法启动导致系统无法启动故障解决
- Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法
- 解决开机时因静电导致鼠标、显示屏和键盘无法工作的问题
- wamp中因root密码修改,而导致无法直接登录phpMyAdmin的解决方法
- 解决Default storage engine (InnoDB) is not available导致mysql无法启动的修改办法
- WordPress中修改固定链接导致无法显示文章内容的问题的解决办法
- mysql 修改密码忘记使用password函数导致后面无法连接,解决方法记录
- Mysql修改datadir导致无法启动问题解决方法
- 修改.bashrc文件错误导致root无法登录的解决办法
- fstab修改有误导致无法启动的解决方法
- 一次误修改sga_max_size值过大后导致数据库无法启动的解决方法
- 解决ubuntu下修改my.cnf设置字符集导致mysql无法启动
- ubuntu 16.04系统下GTX970显卡不支持导致无法开机或开机黑屏解决方法
- MySQL忘记密码或者因为修改mysql.user导致无法登陆解决方法
- 安装linux,导致开机无法选择其他系统的解决办法
- Nginx下修改WordPress固定链接导致无法访问的问题解决
- 解决ubuntu下修改my.cnf设置字符集导致mysql无法启动
- Linux fstab修改不当导致开机fsck失败而主机无法重启