【问题标题】:Getting OpenCV with NDK support to work in Android Studio让具有 NDK 支持的 OpenCV 在 Android Studio 中工作
【发布时间】:2016-05-28 12:35:39
【问题描述】:

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

Error:Execution failed for task ':openCVTutorial2MixedProcessing:compileDebugNdk'.

NDK 未配置。 从http://developer.android.com/tools/sdk/ndk/.Then 下载 NDK,在 local.properties 中添加 ndk.dir=path/to/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')
}

【问题讨论】:

    标签: android c++ opencv android-ndk


    【解决方案1】:

    嗯,您粘贴的代码完全符合注释所说的:

    jni.srcDirs = [] //disable automatic ndk-build
    

    您看不到第一个错误是因为跳过了整个 compileDebugNdk 步骤。这意味着您的应用程序的 NDK 端未构建,这意味着 APK 中没有任何 OpenCV 库,这意味着 Java 无法加载它们,因此 couldn't find "libopencv_java3.so"

    您需要编写一些逻辑来构建项目的 C++ 端。目前有几种方法可以做到这一点,其中最简单的方法是参考NDK samples,它记录了如何仅通过 build.gradle 构建和使用本机代码。 build.gradle file from hello-libs 是开始具有 3rd 方依赖项的项目的好地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-17
      • 2015-08-12
      • 2015-04-27
      • 2014-04-26
      • 2015-12-05
      • 1970-01-01
      • 2015-10-07
      • 2014-01-22
      相关资源
      最近更新 更多