在Android Studio中对开发环境进行配置

在Android Studio中对开发环境进行配置

软件版本

Android Studio 3.5.2
android-ndk-r20b
opencv-3.2.0-android-sdk

新建工程

工程类型选择Native C++,C++ Standard选择 C++11

新建完工程目录

在这里插入图片描述

导入依赖lib

在Main目录下新建jniLibs文件夹,并将 opencv-3.2.0-android-sdk\OpenCV-android-sdk\sdk\native\libs 文件夹下的包复制到 jniLibs中

在这里插入图片描述

修改CMakeLists.txt文件


# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

set(pathToOpenCv F:/opencv-3.2.0-android-sdk/OpenCV-android-sdk)#设置OpenCv的路径变量


#支持-std=gnu++11
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
#配置加载native依赖
include_directories(${pathToOpenCv}/sdk/native/jni/include)

set(CURRENT_DIR ${CMAKE_SOURCE_DIR})
# 在Gradle Console输出信息
# CMAKE_SOURCE_DIR:
message("CURRENT_DIR:" ${CMAKE_SOURCE_DIR})

add_library(lib_opencv STATIC IMPORTED ) #表示创建一个导入库,静态方式

# 设置工程的App路径
set(pathToProject H:/Project/OpenCvAndroid/app)
set(libs ${pathToProject}/src/main/jniLibs)


set_target_properties(lib_opencv
PROPERTIES
IMPORTED_LOCATION ${libs}/${ANDROID_ABI}/libopencv_java3.so
)
include_directories(${pathToProject}/src/main/cpp/includes)
cmake_minimum_required(VERSION 3.4.1)


add_library( # Sets the name of the library.
native-lib
SHARED
native-lib.cpp)



find_library(
log-lib
log)



target_link_libraries(
native-lib

${log-lib} android -ljnigraphics lib_opencv)

修改Module中的build.gradle,添加sourceSets

sourceSets {
main {
jniLibs.srcDirs = ['H:\\Project\\OpenCvAndroid\\app\\src\\main\\jniLibs']
}
}

在native-lib.cpp中添加include

#include <iostream>
#include <sstream>
#include <string>
#include <stdlib.h>
#include <cstdio>
#include <stdio.h>
#include <cstdlib>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>

正常编译则表示OpenCv引入成功

问题:

问题一:

在使用OpenCv2.4时报出错误,这是因为OpenCV引用了GNU的东西。

fatal error: 'ext/atomicity.h' file not found
#include <ext/atomicity.h>
^~~~~~~~~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.

需要在Module中的build.gradle的cmake中添加 arguments "-DANDROID_STL=gnustl_static" 而NDK18之后不支持DANDROID_STL参数,需要将NDK版本修改为17及17以下

externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
}
}

问题二:

Error while executing process =\ninja.exe with arguments {-C .cxx\cmake\debug\arm64-v8a native-lib}
ninja: Entering directory `=\.cxx\cmake\debug\arm64-v8a'

ninja: error: '==/libopencv_java3.so', needed by 'cmake/debug/obj/arm64-v8a/libnative-lib.so', missing and no known rule to make it

需要在CmakeLists.txt文件中添加绝对路径

set(pathToProject H:/Project/MyApplication/app)
set(libs ${pathToProject}/src/main/jniLibs)


set_target_properties(lib_opencv
PROPERTIES
IMPORTED_LOCATION ${libs}/${ANDROID_ABI}/libopencv_java.so
)

在build.gradle中添加sourceset

sourceSets {
main {
jniLibs.srcDirs = ['H:\\Project\\MyApplication\\app\\src\\main\\jniLibs']
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值