我有一个使用OpenCV 3.1
的应用程序。我将lib_opencv_java.so
文件复制到jniLibs
文件夹中。现在我想将一个新的sdk集成到我的应用程序中,但是这个SDK也使用了不同版本的OpenCV。 SDK OpenCV lib添加了Gradle,而不是复制到jni
文件夹。当我构建应用程序时,它会在编译时出错:
在OS独立路径'lib / arm64-v8a / libopencv_java3.so'中找到了多个文件
为了解决这个问题,我重命名了我的OpenCV并重新生成了具有不同名称的.so
文件。之后,它没有给出上述问题,但是当我尝试打开使用OpenCV的活动时。该应用程序因以下错误而崩溃:
java.lang.UnsatisfiedLinkError:dlopen失败:无法找到“/data/app/io.xxxxxx-gilxH9B4dAHGtuXtU4Sl6Q==/lib/arm64/libProcess.so”引用的符号“_ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE”。
要正确摆脱以下错误:
在OS独立路径'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'
}
...
}