解决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目录删除,重编,即可解决该问题。

0 0
原创粉丝点击