關於Android項目中使用外部編譯好的library在網上也有些介紹,基本都是把相應的.so文件拷貝到android工程的 libs/armabi 目錄中,其實這種方法不地道,而且很多時候滿足不了要求,你無法在你的native code中使用這個.so中的features,因為你每次從新ndk-build的時候相應的lib目錄會被更新,你拷貝進去的.so會被刪除,編譯不能完成。這種情況可以參考ndk-docs中的 PREBUILTS.html 。基本過程就是在jni目錄下創建一個放置你要引入的.so的目錄,然後寫一個如下的Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := libfoo.so
include $(PREBUILT_SHARED_LIBRARY)在你需要引入這個.so的Android.mk中加入如下內容,
include $(CLEAR_VARS)
LOCAL_MODULE := foo-user
LOCAL_SRC_FILES := foo-user.c
LOCAL_SHARED_LIBRARIES := foo-prebuilt
include $(BUILD_SHARED_LIBRARY)
當然可能還需要一些頭文件的引入,那些就簡單了。