Android系统开发之三:源码添加编译多个第三方jar包

在源码下编译android工程使用到第三方jar包需要在Android.mk文件中添加java静态库的目录。主要用到了Android.mk文件中的两个变量。

LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES,就是需要加载静态库。


Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)

# Added for source code compile start 为jar起一个别名
LOCAL_STATIC_JAVA_LIBRARIES :=  jarlib1 jarlib2 jarlib3 jarlib4
LOCAL_PACKAGE_NAME := yourprojectname
# Added for source code compile end

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

# Added for source code compile start 冒号前面为jar别名,后面为jar文件的实际路径
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := jarlib1:jars/org.apache.commons.codec-1.7.0.jar \ 
jarlib2:jars/org.knopflerfish.bundle.kxml-LIB-2.3.0.jar \
jarlib3:jars/osgi.cmpn-4.3.0.jar \
jarlib4:jars/osgi.core-4.3.0.jar
include $(BUILD_MULTI_PREBUILT)
# Added for source code compile end

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))


备注:注意上述别名不能出现和系统中其他别名相同的情况,此别名会编译生成out文件夹,如遇同名情况会出现编译报错问题:

LOCAL_STATIC_JAVA_LIBRARIES := jarlib1 jarlib2 jarlib3 jarlib4

 


这里就有两个问题:

第一:jar文件放在android工程的哪里?

答案是随便放在哪里! 这里举个例子,比如我放在工程主目录下的jars文件夹下面,那么我在定义变量LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES值的时候就需要指定一个路径,即jars/。

第二:我在mk文件中怎样引用?

可以看到mk文件中比一般的mk文件增加了两个变量:

LOCAL_STATIC_JAVA_LIBRARIES即java静态库,这里我们只需要取个名字就好;

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES 具体库对应的库文件需要在其中加载即可。

你可能感兴趣的:(Android系统开发之三:源码添加编译多个第三方jar包)