最近引入第三方的jar包进工程,发现光红色的两条并不起作用,加入include $(BUILD_MULTI_PREBUILT) 才起作用,而且顺序很重要,在这里把我参考的两个例子都列出来。
以下为引用例子:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4j
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := test
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
################################################## include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := xsocket:lib/xSocket-2.8.14.jar \ jackson-mapper:lib/jackson-mapper-asl-1.6.2.jar \ logging:lib/commons-logging.jar \ jackson-core:lib/jackson-core-asl-1.6.2.jar \ javatar:lib/javatar-2.5.jar \ log4j:lib/log4j-1.2.15.jar
include $(BUILD_MULTI_PREBUILT)
# Use the folloing include to make our test apk. include $(call all-makefiles-under,$(LOCAL_PATH))
以上是我的一个项目中所需要的第三方jar包,主要参考了Android源码中的Calculator应用,该应用也引用了一个第三方的jar包arity-2.1.2.jar。
需要注意的是,当你要引用的jar包不止一个时,有两个关键的地方需要注意的。
LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4j
jackson-mapper:lib/jackson-mapper-asl-1.6.2.jar \ logging:lib/commons-logging.jar \ jackson-core:lib/jackson-core-asl-1.6.2.jar \ javatar:lib/javatar-2.5.jar \ log4j:lib/log4j-1.2.15.jar
xsocket jackson-mapper logging jackson-core javatar log4j这几个只是名字,可以随便取。LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES后面才是真正其作用的地方。如:
xsocket:lib/xSocket-2.8.14.jar 引用的是lib目录中的xSocket-2.8.14.jar。
还要注意的是 := 不要写成了+=了哦。
附:编写各种类型的Android.mk,出处我忘记了,是以前浏览是拷贝下来的。如果侵犯了作者的权益,烦请联系我hopetribe@gmail.com。我及时删除。
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirectory LOCAL_SRC_FILES := $(call all-subdir-java-files) # Name of the APK to build LOCAL_PACKAGE_NAME := LocalPackage # Tell it to build an APK include $(BUILD_PACKAGE)
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # List of static libraries to include in the package LOCAL_STATIC_JAVA_LIBRARIES := static-library # Build all java files in the java subdirectory LOCAL_SRC_FILES := $(call all-subdir-java-files) # Name of the APK to build LOCAL_PACKAGE_NAME := LocalPackage # Tell it to build an APK include $(BUILD_PACKAGE) 注:LOCAL_STATIC_JAVA_LIBRARIES 后面应是你的APK程序所需要的JAVA库的JAR文件名。
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirectory LOCAL_SRC_FILES := $(call all-subdir-java-files) # Name of the APK to build LOCAL_PACKAGE_NAME := LocalPackage LOCAL_CERTIFICATE := platform # Tell it to build an APK include $(BUILD_PACKAGE) 注:LOCAL_CERTIFICATE 后面应该是签名文件的文件名
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirectory LOCAL_SRC_FILES := $(call all-subdir-java-files) # Name of the APK to build LOCAL_PACKAGE_NAME := LocalPackage LOCAL_CERTIFICATE := vendor/example/certs/app # Tell it to build an APK include $(BUILD_PACKAGE)
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Module name should match apk name to be installed. LOCAL_MODULE := LocalModuleName LOCAL_SRC_FILES := $(LOCAL_MODULE).apk LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_CERTIFICATE := platform include $(BUILD_PREBUILT)
LOCAL_PATH := $(my-dir) include $(CLEAR_VARS) LOCAL_MODULE := baiduinput_android_v1.1_1000e LOCAL_SRC_FILES := $(LOCAL_MODULE).apk LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_CERTIFICATE := platform include $(BUILD_PREBUILT)
################################################################# ####### copy the library to /system/lib ######################### ################################################################# include $(CLEAR_VARS) LOCAL_MODULE := libinputcore.so LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES) LOCAL_SRC_FILES := lib/$(LOCAL_MODULE) OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES) include $(BUILD_PREBUILT)
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirectory LOCAL_SRC_FILES := $(call all-subdir-java-files) # Any libraries that this library depends on LOCAL_JAVA_LIBRARIES := android.test.runner # The name of the jar file to create LOCAL_MODULE := sample # Build a static jar file. include $(BUILD_STATIC_JAVA_LIBRARY) 注:LOCAL_JAVA_LIBRARIES表示生成的java库的jar文件名。
来源:http://www.cnblogs.com/hopetribe/archive/2012/04/23/2467060.html
include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := ta:libs/TA4AIDL.jar include $(BUILD_MULTI_PREBUILT)
下面的代码可以加到任一个文件中:添加共享库:LOCAL_MODULE := libffmpeg #库的名字LOCAL_MODULE_TAGS := optional #系统内有效,你可以试一下不加这一行就可以看到出错提示信息。LOCAL_PREBUILT_LIBS := libffmpeg.so #库的路径。 添加静态库: include $(CLEAR_VARS) LOCAL_MODULE := libavcodec LOCAL_PREBUILT_LIBS := libavcodec.a LOCAL_MODULE_TAGS := optional include $(BUILD_MULTI_PREBUILT)
静态库和动态库是对应的,静态库是在链接时使用,动态库是在运行时使用,使用方法:
在要用到对应库的模块的Android.mk文件中加入类似于下面的内容:
静态库(链接时用,它会被复制到out/target/product/generic/obj/STATIC_LIBRARIES/libavcodec_intermediates/目录下):
LOCAL_WHOLE_STATIC_LIBRARIES += \ libavcodec #这个是模块名(LOCAL_MODULE) 动态库(运行时用,它会被复制到/system/lib/目录下。): LOCAL_SHARED_LIBRARIES += \ libffmpeg
include $(call all-makefiles-under,$(LOCAL_PATH)) #这句上调用子目录下的很有Android.mk
来源:http://hi.baidu.com/2400xiaobing/item/ffa78cd51f76d81521e25085
LOCAL_STATIC_JAVA_LIBRARIES := ta
include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := ta:libs/TA4AIDL.jar include $(BUILD_MULTI_PREBUILT)
转载于:https://www.cnblogs.com/dongdong230/p/4597018.html
相关资源:Android.mk文件中添加第三方jar文件的方法