解决android 4.3 的user版本没法启动
来源:互联网 发布:淘宝店铺利益点介绍 编辑:程序博客网 时间:2024/05/29 17:10
user版本启动时一直报错: odex has stale dependencies.
从日志看,就知道是优化odex时出了问题,于是将build/core.main.mk文件中的WITH_DEXPREOPT值修改为false,该值用来判断是否对jar文件或者apk文件进行优化,user版本默认为true。重新编译system.img,烧录,机器正常启动。
但为什么一优化,就会有问题呢?google了下,说是要求BOOTCLASSPATH 值与DEXPREOPT_BOOT_JARS值相等。
而我的BOOTCLASSPATH 值增加了/system/framework/qcom.fmradio.jar:/system/framework/oem-services.jar:/system/framework/WfdCommon.jar:/system/framework/qcmediaplayer.jar 等包,所以找到编译文件中的DEXPREOPT_BOOT_JARS,做相应修改。注意:这两个值不只是包含的jar包一致,还要求顺序一致。要不编译也会出现同样错误。重新编译,烧写系统,ok。
处理问题过程中,还遇到另一个问题:编译user版本,只是将WITH_DEXPREOPT修改为false,然后删除system目录,就重新编译了。结果出现:Zip is good, but no classes.dex inside, and no valid .odex file in the same directory,这是.jar文件中没有classes.dex文件导致。编译user版本时,将会产生dex_bootjars目录,DEXPREOPT_BOOT_JARS 指定的包都会被拷贝到该目录下,然后优化成nodex.jar和odex,
重新编译user版本时,因为没有文件被修改,不会对每个jar文件再次编译,只是把原来产生的nodex.jar文件拷贝过去了,从而导致出现no classes.dex inside。只要将dex_bootjars目录删除,重编,即可解决该问题。
从日志看,就知道是优化odex时出了问题,于是将build/core.main.mk文件中的WITH_DEXPREOPT值修改为false,该值用来判断是否对jar文件或者apk文件进行优化,user版本默认为true。重新编译system.img,烧录,机器正常启动。
但为什么一优化,就会有问题呢?google了下,说是要求BOOTCLASSPATH 值与DEXPREOPT_BOOT_JARS值相等。
而我的BOOTCLASSPATH 值增加了/system/framework/qcom.fmradio.jar:/system/framework/oem-services.jar:/system/framework/WfdCommon.jar:/system/framework/qcmediaplayer.jar 等包,所以找到编译文件中的DEXPREOPT_BOOT_JARS,做相应修改。注意:这两个值不只是包含的jar包一致,还要求顺序一致。要不编译也会出现同样错误。重新编译,烧写系统,ok。
这是.jar文件中没有classes.dex文件导致。
编译user版本时,将会产生dex_bootjars目录,DEXPREOPT_BOOT_JARS 指定的包都会被拷贝到该目录下,然后优化成nodex.jar和odex,
重新编译user版本时,因为没有文件被修改,不会对每个jar文件再次编译,只是把原来产生的nodex.jar文件拷贝过去了,从而导致出现no classes.dex inside。只要将dex_bootjars目录删除,重编,即可解决该问题。
0 0
- 解决android 4.3 的user版本没法启动
- android编译user版本,如何启用user版本的adb
- tomcat7的apache服务在win7下没法启动不称功的问题--解决1
- Android user 与 eng 版本的差异
- Android userdebug user eng版本的区别
- wamp 中apache没法启动的问题
- 解决IE 没法访问https 的问题
- Android USER 版本与ENG 版本的差异
- Android USER 版本与ENG 版本的差异
- Android USER 版本与ENG 版本的差异
- Android USER 版本与ENG 版本的差异
- android user版本和eng版本的差异介绍
- Android USER 版本与ENG 版本的差异
- 编译默认root的android的user版本
- 程序启动时没有找到已运行的Android虚拟机的解决版本
- Android编译版本eng、user和userdebug的区别
- Android编译版本eng、user和userdebug的区别:
- Android 6.0 如何默认打开user版本的root权限
- 清除myeclipse中的web browser里的历史记录
- 谈.Net委托与线程——解决窗体假死
- extjs 跨域问题
- php正则表达式总结
- Nashorn为Java与JavaScript搭起一座桥
- 解决android 4.3 的user版本没法启动
- qsort和sort的区别
- tomcat startup.sh提示java.lang.OutOfMemoryError: PermGen space
- VC界面
- 网站首页没被收录的原因
- 基于STM32的学习型通用红外遥控设备的设计实现(一)
- 浙大PAT 1069题 1069. The Black Hole of Numbers
- C语言有哪些关键字
- php redis 命令