Android项目工程在源码环境下编译时使用第三方jar包,首先要将这个jar包编译成java静态链接库,然后在源码编译的时候才能调用到jar包里面的内容。比如有个Android工程HelloWorld要用到abc.jar包中的内容,我们将abc.jar这个文件放在工程主目录下的jars目录,然后可以这样来写Android.mk文件。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := abclib
LOCAL_PACKAGE_NAME := HelloWorld
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := abclib:jars/abc.jar
include $(BUILD_MULTI_PREBUILT)
Android.mk中指定的编译规则可以看出,是将jars目录下的abc.jar编译成java静态连接库,这个链接库的名字是abclib(这个名字可以随意取),但是一定要和LOCAL_STATIC_JAVA_LIBRARIES变量中指定的一致。
如果要引用多个jar文件怎么办?这里要引用abc.jar bcd.har cde.jar 这三个jar包,只需要在LOCAL_STATIC_JAVA_LIBRARIES变量和LOACAL_PREBUILT_STATIC_JAVA_LIBRARIES后面加上对应的名称和jar文件即可,如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := abclib bcdlib cdelib
LOCAL_PACKAGE_NAME := HelloWorld
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := abclib:jars/abc.jar bcdlib:jars/bcd.jar cdelib:jars/cde.jar
include $(BUILD_MULTI_PREBUILT)
就是这样的。