有没有办法使用同一个库的 2 个不同版本,所以 android 中的文件

Mur*_*kov 2 java-native-interface android android-ndk android-studio opencv3.1

我有一个使用OpenCV 3.1. 我将lib_opencv_java.so文件复制到jniLibs文件夹中。现在我想将一个新的 sdk 集成到我的应用程序中,但是这个 SDK 也使用了不同版本的 OpenCV。SDK OpenCV 库随 Gradle 添加,未复制到jni文件夹。当我构建应用程序时,它在编译时出现错误:

发现多个文件与操作系统独立路径“lib/arm64-v8a/libopencv_java3.so”

为了解决这个问题,我重命名了我的 OpenCV 并.so用不同的名称重新生成了文件。之后,它没有给出上述问题,但是当我尝试打开使用 OpenCV 的活动时。应用程序因以下错误而崩溃:

java.lang.UnsatisfiedLinkError: dlopen failed: 找不到符号“_ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKNS_11_InputArrayERKSt6vectorIiSaIiEE”引用的“/data/app/io.xxxxxx-gilxH9B4dAHGtuXtU4Sl64==/lib.sorm6”

shi*_*hen 5

要正确摆脱以下错误:

发现多个文件与操作系统独立路径“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'
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)