在Android Studio中使用支持NDK的OpenCV

在Android Studio中使用支持NDK的OpenCV,android,c++,opencv,android-ndk,Android,C++,Opencv,Android Ndk,我对openCV和android编程非常陌生,我想在我的项目中使用openCV。目前,我正试图在我的android studio中运行openCV的第二个教程,但我总是遇到以下NDK错误: Error:Execution failed for task ':openCVTutorial2MixedProcessing:compileDebugNdk'. 未配置NDK。 从local.properties中的add NDK.dir=path/to/NDK下载NDK。 (在Windows上,请确保

我对openCV和android编程非常陌生,我想在我的项目中使用openCV。目前,我正试图在我的android studio中运行openCV的第二个教程,但我总是遇到以下NDK错误:

Error:Execution failed for task ':openCVTutorial2MixedProcessing:compileDebugNdk'.
未配置NDK。 从local.properties中的add NDK.dir=path/to/NDK下载NDK。 (在Windows上,请确保避开反斜杠,例如C:\ndk而不是C:\ndk)

然后我查看了互联网,一些人建议我将这些添加到gradle.build文件中:

    jniLibs.srcDirs = ['native-libs']
    jni.srcDirs = [] //disable automatic ndk-build
添加这些后,它可以正常工作,但出现以下错误:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.opencv.samples.tutorial2-2/base.apk"],nativeLibraryDirectories=[/data/app/org.opencv.samples.tutorial2-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libopencv_java3.so"
这是我的gradle文件:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "org.opencv.samples.tutorial2"
        minSdkVersion 21
        targetSdkVersion 23

        ndk {
            moduleName "mixed_sample"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    sourceSets{main {jni.srcDirs = ['src/main/jni','src/main/jniLibs']
        jniLibs.srcDirs = ['native-libs']
        jni.srcDirs = [] //disable automatic ndk-build
    }}
}

dependencies {
    compile project(':openCVLibrary310')
}

那么,您粘贴的代码正是按照注释所说的那样执行的:

jni.srcDirs = [] //disable automatic ndk-build
您看不到第一个错误是因为跳过了整个
compiledbugndk
步骤。这意味着应用程序的NDK端没有构建,这意味着APK中没有OpenCV库,这意味着Java无法加载它们,因此
无法找到“libopencv\u java3.so”


您需要编写一点逻辑来构建项目的C++侧。目前有两种方法可以做到这一点,其中最简单的方法是引用which文档,说明如何仅使用build.gradle构建和使用本机代码。对于具有第三方依赖关系的项目来说,这是一个很好的起点。

好吧,您粘贴的代码完全符合注释所述:

jni.srcDirs = [] //disable automatic ndk-build
您看不到第一个错误是因为跳过了整个
compiledbugndk
步骤。这意味着应用程序的NDK端没有构建,这意味着APK中没有OpenCV库,这意味着Java无法加载它们,因此
无法找到“libopencv\u java3.so”

您需要编写一点逻辑来构建项目的C++侧。目前有两种方法可以做到这一点,其中最简单的方法是引用which文档,说明如何仅使用build.gradle构建和使用本机代码。对于具有第三方依赖关系的项目来说,是一个很好的起点