我是openCV和android编程的新手,我想在我的项目中使用openCV。现在我试图在我的android工作室中运行openCV的第二个教程,但我总是得到以下NDK错误:
Error:Execution failed for task ':openCVTutorial2MixedProcessing:compileDebugNdk'.
未配置NDK。 从http://developer.android.com/tools/sdk/ndk/.Then下载NDK,在local.properties中添加ndk.dir = path /到/ 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')
}
答案 0 :(得分:0)
嗯,您粘贴的代码完全符合评论所说的内容:
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是一个很好的起点。