最近引入第三方的jar包進工程,發現光紅色的兩條並不起做用,加入include $(BUILD_MULTI_PREBUILT) 才起做用,並且順序很重要,在這裏把我參考的兩個例子都列出來。html
如下爲引用例子:java
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------android
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)app
LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4jsocket
LOCAL_MODULE_TAGS := optionalui
LOCAL_SRC_FILES := $(call all-subdir-java-files)this
LOCAL_PACKAGE_NAME := testspa
LOCAL_CERTIFICATE := platformcode
include $(BUILD_PACKAGE)orm
##################################################
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)