android开发 使用cmake构建jni工程,并添加opencv模块
2017-12-27 22:22
711 查看
向现有项目添加 C/C++ 代码
1.切换到project试图,在app下,打开build.gradle在android{}中添加: externalNativeBuild { cmake { path "CMakeLists.txt" } }
2.project>>app>>new>>file 创建CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") set(ProjectDir /home/cuizhou/codes/AndroidStudioProjects/CuiZhou-JNI-OpenCV-SSD-Mobilenet-Demo) #----------------------------------------------------- # wrapper add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/native-lib.cpp) find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log ) target_link_libraries( # Specifies the target library. native-lib # Links the target library to the log library # included in the NDK. ${log-lib} # lib_opencv)
3.编写java native 方法,并生成头文件
在MainActivity中添加native方法
static { System.loadLibrary("native-lib"); } public native String stringFromJNI();
或者新建类 MyClass.java, 生成头文件
cd project/app/src/main/java javah -cp ~/Android/Sdk/platforms/android-27/android.jar:. com.example.MyClass
4.新建cpp,实现jni函数
添加opencv模块
从观望上下载android for opencv把OpenCV-android-sdk/sdk/native/libs拷贝到src/main/目录下,重新命名为jniLibs
在CMakeList中添加
#----------------------------------------------------- # OpenCV set(pathToOpenCv /home/cuizhou/codes/AndroidStudioProjects/OpenCV3.4-android-sdk) include_directories(${pathToOpenCv}/sdk/native/jni/include) add_library(lib_opencv STATIC IMPORTED ) set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${ProjectDir}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so )
在native cpp中可以使用opencv
#include <opencv2/core/cvdef.h> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; ... cv::Mat srcImage=cv::Mat::zeros(cv::Size(300,300),CV_8UC1); ...
参考
官方文档,config cmake:
https://developer.android.com/studio/projects/configure-cmake.html#add-other-library
很好的翻译文档:
http://blog.csdn.net/check816/article/details/77074323
todo:
梳理《透析Android以JNI调OpenCV的三种方式》
http://blog.csdn.net/yanzi1225627/article/details/27863615
9688
相关文章推荐
- Android: 使用CMake 构建 JNI 项目
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- Android jni开发-2(在旧项目上添加支持cmake编译的jni)
- 笔记:vs使用cmake自动添加opencv和boost(MFC使用cmake建立工程)
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- Android Studio cmake方式jni开发,在c层使用其它动态链接库*.so
- android studio cMake脚本添加ndk,构建C/C++程序(基础使用篇
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法实现边缘检测代码(2)
- android开发在jni中使用Opencv进行图像处理,环境搭建篇
- [转]Android通过NDK调用JNI,使用opencv做本地c++代码开发配置方法
- Android笔记之使用CMake进行JNI开发(Android Studio)
- Android 程式开发:(四)使用Intent调用“内置”应用 —— 4.4添加Category属性
- Android 程式开发:(九)使用活动栏 —— 9.2添加ActionBar项目
- Android Map Api 使用和开发(1) 添加地图和界面
- android开发中系统自带语音模块的使用
- 如何在eclipse的android工程中添加外部javadoc.jar包,方便开发
- Android Map Api 使用和开发(1) 添加地图和界面