关于Android|关于Android JAR包的优化问题
1、把jar包优化成odex包:
【关于Android|关于Android JAR包的优化问题】在编译脚本.mk里面定义"WITH_DEXPREOPT:=true"
这样做,系统在第一次起来的速度比较快。开启了pre-dexopt的系统,jar有依赖性的优化,所以每次修改了java代码,都必须把out目录下的.odex文件清空,然后重编镜像。
清空.odex文件可以进入out目录,执行:
find -name "*.odex" | xargs rm -f
2、遇到这样一个错误:
I/dalvikvm(621): DexOpt: Some deps went away
E/dalvikvm(621): /system/framework/android.policy.jar odex has stale dependencies
I/dalvikvm(621): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory
D/dalvikvm(621): Unable to process classpath element '/system/framework/android.policy.jar'
I/dalvikvm(621): DexOpt: Some deps went away
E/dalvikvm(621): /system/framework/services.jar odex has stale dependencies
I/dalvikvm(621): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory
D/dalvikvm(621): Unable to process classpath element '/system/framework/services.jar'
I/dalvikvm(621): DexOpt: Some deps went away
E/dalvikvm(621): /system/framework/apache-xml.jar odex has stale dependencies
I/dalvikvm(621): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory
D/dalvikvm(621): Unable to process classpath element '/system/framework/apache-xml.jar'
原因是build/core/dex_preopt.mk里面的宏DEXPREOPT_BOOT_JARS和init.rc里面的宏BOOTCLASSPATH所赋值的包的位置不一样,把它们对应起来就解决了。如下:
build/core/dex_preopt.mk里面:
DEXPREOPT_BOOT_JARS := core:core-junit:bouncycastle:ext:framework:telephony-common:mms-common:android.policy:services:apache-xml
init.rc里面:
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar
推荐阅读
- android第三方框架(五)ButterKnife
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- Android中的AES加密-下
- 醒不来的梦
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- 关于自我为中心的一点感想
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- Android事件传递源码分析