android自帶的編譯工具NDK進行編譯時(非單純的調用第三方.so而是進行ndk編程),armeabi以及armeabi-v7a文件夾下的第三方so文件將會被刪除,只會產生編譯后的so文件,其他的so文件將無法引入,現在我們就來解決:在需要引入第三方的so文件的情況下,怎樣使用NDK編譯本地代碼。
- 在project/jni目錄下創建prebuilt子目錄(目錄名可自定義).
?
- 將第三方.so放到prebuilt中,并創建Android.mk,內容如下:
1 LOCAL_PATH := $(call my-dir)
2
3 include $(CLEAR_VARS)
4 #指定生成的.so文件的名稱(hello-jni為第三方.so文件)
5 LOCAL_MODULE := hello-jni
6 #指定需要導入的.so庫文件
7 LOCAL_SRC_FILES := libhello-jni.so
8 include $(PREBUILT_SHARED_LIBRARY)
- 修改project/jni/Android.mk文件內容(紅色字體為新加內容)
?
1 LOCAL_PATH := $(call my-dir)
2
3 include $(CLEAR_VARS)
4 #指定生成的.so文件的名稱
5 LOCAL_MODULE := hello
6 #指定需要編譯的.c文件
7 LOCAL_SRC_FILES := hello.c
8
9 include $(BUILD_SHARED_LIBRARY)
10 include $(LOCAL_PATH)/prebuilt/Android.mk
?
- 到project目錄下執行:ndk-build(執行成功將會在project/libs/armeabi 目錄下看見相關.so庫文件)
?