NDK允許使用PREBUILT_SHARED_LIBRARY變量與預建的用戶庫進行鏈接。
假設你需要鏈接庫是librandom.so,在jni
子文件夾的項目文件夾中創建一個文件夾libs
:
mkdir -p jni/libs
cp librandom.so jni/libs
然後,只需創建一個jni/libs/Android.mk
文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := random
LOCAL_SRC_FILES := librandom.so
include $(PREBUILT_SHARED_LIBRARY)
您可以爲每個預建庫創建一個部分,全部放置在jni/libs
中。
接下來,您只需將上述文件包含到您的jni/Android.mk中即可使用。在NDK的文檔,建議本在Android.mk年底完成,而不是中間:
include $(LOCAL_PATH)/libs/Android.mk
但是,你需要的是需要這個庫中的模塊之前做到這一點。
對於鏈接,您需要將以下內容添加到鏈接到預建庫的模塊部分。
LOCAL_SHARED_LIBRARIES := random
然後當你做NDK建造,它將這個庫複製到libs/armeabi/
構建模塊之前,你是好去。
注意:這並不能解決所需標題的問題。您仍然需要將庫標題的位置添加到需要它的模塊中的變量LOCAL_C_INCLUDES
。
更新:如果一個庫依賴於另一個庫,請參閱http://stackoverflow.com/questions/17688327/android-ndk-make-two-native-shared-libraries-calling-each-other – 18446744073709551615 2014-04-18 08:16:06