转载请注明出处:http://blog.csdn.net/droyon/article/details/8653908
如何添加子项目到系统中?
总结:可添加的子项目可以是apk源代码,可以是c程序,用于编译动态库,或者动态库。
c项目,一般放在external下,首先
mkdir Helloworld
然后新建源文件
touch Hello.c
在源文件中输入源代码
#include<stdio.h>
int main(){
printf("%s",str);
}
然后在目录下建立Android.mk文件,在这个文件中,我们要定义编译规则。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES :=\
Hello.c
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_MODULE := Helloworld
LOCAL_MODULE_TAGS :=eng
include $(BUILD_EXECUTABLE)
如果要增加头文件,我们可以增加SRC_HEADERS的值。这个值定义了系统提供的头文件的路径,这个变量,在config.mk中定义的。
SRC_HEADERS := \
$(TOPDIR)system/core/include \
$(TOPDIR)hardware/libhardware/include \
$(TOPDIR)hardware/libhardware_legacy/include \
$(TOPDIR)hardware/ril/include \
$(TOPDIR)dalvik/libnativehelper/include \
$(TOPDIR)frameworks/base/include \
$(TOPDIR)frameworks/base/opengl/include \
$(TOPDIR)frameworks/base/native/include \
$(TOPDIR)external/skia/include
apk项目
我们可以在vendor文件夹目录下以及package目录下考虑添加apk项目,把java文件放在目录下,最重要的是编写Android.mk文件。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under,src)\
src/com/fenghuolun/android/myapk/IHelloworld.aidl /**包含aidl文件 **/
LOCAL_PACKAGE_NAME := myAPk
LOCAL_SDK_VERSION :=current
LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_FLAG_FILES := proguard.cfg
include $(BUILD_PACKAGE)
include(CLEAR_VARS)
LOCAL_MODULE_TAGS :=optional
LOCAL_PACKAGE_NAME :=myAPkJar
LOCAL_PREBUIT_STATIC_JAVA_LIBBARIES :=myapkbin:myapk.jar /** 添加静态库**/
include $(BUILD_MULTI_PREBUILT)
LOCAL_JAVA_LIBRARIES:myShareJar /** 添加共享库**/
如果我们要添加的apk项目,是编译好的apk文件,如果需要将此apk文件编写进入到system/app目录下,可以在项目的AndroidProduct.mk文件中如下写:
PRODUCT_COPY_FILES :=
vendor/fenghuolun/jerry/myAPk/myAPk.apk :/system/app
apk项目就添加完了,我们可以编译了。