1、首先說明一下文件放置的目錄結構以下:shell
----jni | prebuild |libturbojpeg.so |libturbojpeg.h |prebuild.mk Android.mk Application.mk com_XXX_XXX_XXX.cpp com_XXX_XXX_XXX.h
說明:prebuild是咱們須要調用的第三方的so文件的放置的目錄,裏面還有一個prebuild.mk文件,主要是用來聲明預編譯用的.libturbojpeg.h 爲相應的頭文件。函數
其中libturbojpeg.h裏面定義函數:ui
Mat decodeJpg(...,...,...)
2、個人需求:在com_XXX_XXX_XXX.cpp中須要使用到decodeJpg,詳細以下:code
#include "prebuild/libturbojpeg.h" void myDecode() { Mat m = decodeJpg(...); }
3、具體說明: (1)prebuild.mk內容:io
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := turbojpeg LOCAL_SRC_FILES := libturbojpeg.so TARGET_PRELINK_MODULES := false include $(PREBUILT_SHARED_LIBRARY)
(2)Android.mk內容:編譯
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) #OPENCV_CAMERA_MODULES:=on OPENCV_INSTALL_MODULES:=on OPENCV_LIB_TYPE:=STATIC include ../../../../sdk/native/jni/OpenCV.mk MY_FILES_PATH := $(LOCAL_PATH) \ # $(LOCAL_PATH)/../../Classes MY_FILES_SUFFIX := %.cpp %.c %.cc My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f) ) My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%) MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files)) MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%) **LOCAL_SHARED_LIBRARIES += turbojpeg** LOCAL_SRC_FILES += $(MY_SRC_LIST) LOCAL_C_INCLUDES += $(LOCAL_PATH) LOCAL_LDLIBS += -llog -ldl LOCAL_CFLAGS += -std=gnu++11 LOCAL_MODULE := LPR include $(BUILD_SHARED_LIBRARY)1. 這裏是列表文本 **include $(LOCAL_PATH)/prebuild/prebuild.mk**
注:加粗部分是須要加載第三方so庫須要的mk腳本foreach
(3)ndk-build 作好上面的工做了以後就能夠執行NDK編譯了sdk