android studio3.0 在已有项目基础上配置opencv(native)

1、前言

Android Studio在2.2版本更新之后加入了CMAKE方式配置NDK的方法,这大大简化了之前通过Android.mk和Application.mk两个本地配置文件进行NDK开发的方式。这种方法在后续更新的版本中不断增强,越来越好用,越来越不会出问题。本文基于Android Studio3.1的版本进行配置,使用CMAKE的配置方式配置OpenCV最新版(截止发文时间是OpenCV 3.4.1),并在最后给出一个灰度转换的测试Demo。
如果你想通过Android NDK开发配置OpenCV,本文或许对你有用。

android使用CMake进行jni编写遇到的一些问题

2、开发环境

Android Studio 3.0
OpenCV for Android 3.4.1
Android NDK 16
CMAKE

注意:如果直接使用AS下载的NDK,则为测试版17,可能会出现以下问题:

Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'

主要是ndk版本问题,重新下载一个低一点的版本就好了。

3、opencv for android的配置

注意:这里是在一个旧项目上添加c++支持,我们需要在app目录下自己建立一个CMakeLists.txt文件,而且需要在src/main文件夹下新建一个cpp的文件夹

3.1. opencv的配置:

  • include文件

在下载好的OpenCV压缩包中,打开路径下的.\opencv-3.4.1-android-sdk\OpenCV-android-sdk\sdk\native\jni 有一个include文件夹,把这个文件夹复制粘贴至我们的OpenCVTest项目中,路径为src/main/cpp

  • jni文件

然后是动态库(.so文件),打开路径下的.\opencv-3.4.1-android-sdk\OpenCV-android-sdk\sdk\native ,有一个libs 文件夹,这个文件夹里面是所有版本的abi的so文件。复制粘贴到我们的项目中,路径为app目录下的libs。

注意:
  1. 无论是include还是libs的路径都可以自定义,习惯上是这样放,但其实只要在之后的CMakeList配置文件里面设置正确就没有问题。
  2. 值得一提的是,OpenCV在最新版本中把动态库和静态库分开了,分别放在libs和staticlbs两个文件夹中,之前是放在一个文件夹里的。我们测试Demo仅需要动态库和头文件即可。

目录如下图所示:
这里写图片描述

3.2. gradle的配置

在android 节点中添加如下代码:

sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
            jni.srcDirs = []
        }
}

这一步设置了动态链接库的路径地址,用于项目构建时,Native寻找和链接相关的so文件。

最终的build.gradle如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 15
        targetSdkVersion 26
        ver
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值