JniOpencv环境配置
一、准备开发包
- 将OpenCV-android-sdk->sdk->native->libs->armeabi拷贝到项目main->jniLibs中
- 将OpenCV-android-sdk->sdk->native->libs->armeabi拷贝到项目libs目录中
这里使用2.,原因是方便搭建OpenCV Java开发环境(详情见下文)
二、修改jniLibs的目录
jniLibs的默认目录是../../../../src/main/jniLibs
,使用方法2.后要在bulid.gradle中修改jniLibs的目录路径,使用方法1.这一步就不需要指定
android {
...
sourceSets {
main {
//jni库的调用会到资源文件夹下libs里面找so文件
jniLibs.srcDirs = ['libs']
}
}
}
三、准备库
将以下配置拷贝到CMakeLists.txt中,注意根据实际情况修改路径
# OpenCV-android-sdk路径,配置公共路径
set(pathToOpenCv /Volumes/D/material/opencv/opencv-3.2.0-android-sdk)
# 支持-std=gnu++11
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
# 配置加载native依赖(引入OpenCV头文件,类似于Java的jar包),配置头文件
include_directories(${pathToOpenCv}/sdk/native/jni/include)
# 动态方式加载,配置动态库
add_library( opencv_java3
SHARED
IMPORTED )
# 引入libopencv_java3.so文件,配置动态库
set_target_properties( opencv_java3
PROPERTIES IMPORTED_LOCATION
../../../../libs/armeabi/libopencv_java3.so)
# 链接opencv_java3
target_link_libraries( # Specifies the target library.
native-lib opencv_java3
# Links the target library to the
log library
# included in the NDK.
${log-lib} )
四、配置CPU平台架构类型
在android节点的defaultconfig下添加,注意根据实际情况选取:
externalNativeBuild {
cmake {
...
// 配置
// abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
abiFilters 'armeabi'
}
}
五、如果是子项目配置OpenCV,在主项目的bulid.grale中要根据平台添加
defaultConfig {
...
ndk {
// abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a',