您的位置:首页 > 移动开发 > Android开发

如何在Android源码中修改BootClassPath

2016-02-16 11:10 1121 查看
如果新增加一个jar包,需要在开机的过程中完成preload的话,就需要在init.rc中将这个jar包添加到启动过程中,这样的话,就需要修改BOOTCLASSPATH。那么在源码中是如何来实现的呢?

可以修改system/core/rootdir/init.rc文件。

--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -37,7 +37,7 @@ loglevel 3
export ANDROID_STORAGE /storage
export ASEC_MOUNTPOINT /mnt/asec
export LOOP_MOUNTPOINT /mnt/obb
-    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/voip-common.jar:/system/framework/mms-common.jar
+    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/voip-common.jar:/system/framework/mms-common.jar:/system/framework/apache-xml.jar:/system/framework/my_test.jar

# Backward compatibility
symlink /system/etc /etc


需要注意的是,新增加的my_test.jar必须是一个动态的jar。
为什么修改这个地方,就可以在最后生成的包中得到体现呢?

因为在这个目录下面的Android.mk中,有实现如下的功能:

# files that live under /...

# Only copy init.rc if the target doesn't have its own.
ifneq ($(TARGET_PROVIDES_INIT_RC),true)
file := $(TARGET_ROOT_OUT)/init.rc
$(file) : $(LOCAL_PATH)/init.rc | $(ACP)
$(transform-prebuilt-to-target)
ALL_PREBUILT += $(file)
$(INSTALLED_RAMDISK_TARGET): $(file)
endif


参考文档:

【1】Dalvik的BOOTCLASSPATH和dexopt流程 /article/8868436.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: