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