http://blog.csdn.net/u013686019/article/details/52289299
Version:
Android 4.2.2
在android_src/framework/目录下添加自己的系统服务,比如:OurService,系统中明明有自己服务的jar包,却会报“java.lang.NoClassDefFoundError”的错误:
BOOT FAILURE starting OurService Service
F/SystemServer( 423): java.lang.NoClassDefFoundError: com.test.OurService
F/SystemServer( 423): at com.android.server.ServerThread.run(SystemServer.java:765)
原因也都清楚:在SystemServer运行并添加服务的时候,jar包还没加载上来。
那么接下来的问题就是:怎么提前加载自己的jar包?
android_src/device/rockchip/rk30sdk/copyfiles/init.rc: export BOOTCLASSPATH
android_src/build/core/dex_preopt.mk:DEXPREOPT_BOOT_JARS
BOOTCLASSPATH和DEXPREOPT_BOOT_JARS指明了需要提前加载的jar包且两者是一一对应的,否则系统无法启动
。
接下只需把自己的jar添加进去即可,比如/system/framework/ourservice.jar:
export BOOTCLASSPATH shenglue:/system/framework/ourservice.jar
DEXPREOPT_BOOT_JARS := shenglue:ourservice