我有一个使用OpenCV 3.1
的应用程序。我将lib_opencv_java.so
文件复制到jniLibs
文件夹中。现在,我想将新的sdk集成到我的应用程序中,但是此SDK也使用其他版本的OpenCV。带有Gradle的SDK OpenCV lib已添加,未复制到jni
文件夹中。当我构建应用程序时,它在编译时给出了错误:
使用操作系统独立路径'lib / arm64-v8a / libopencv_java3.so'找到多个文件
为解决此问题,我重命名了OpenCV,并使用不同的名称重新生成了.so
文件。之后,它没有出现上述问题,但是当我尝试打开使用OpenCV的活动时。该应用程序崩溃并出现以下错误:
java.lang.UnsatisfiedLinkError:dlopen失败:无法找到符号“ _ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE”,并由“ /data/app/io.xxxxxx-gilxH9B4dAHGtuXtU4Sl6so=/lib”引用。
答案 0 :(得分:4)
要正确摆脱以下错误:
使用操作系统独立路径'lib / arm64-v8a / libopencv_java3.so'找到多个文件
您应在app/build.gradle
android{
...
packagingOptions {
pickFirst 'lib/x86_64/libopencv_java3.so'
pickFirst 'lib/x86/libopencv_java3.so'
pickFirst 'lib/arm64-v8a/libopencv_java3.so'
pickFirst 'lib/armeabi-v7a/libopencv_java3.so'
}
...
}