Есть ли способ использовать 2 разные версии одной и той же библиотеки, чтобы файлы в Android - PullRequest
0 голосов
/ 31 января 2019

У меня есть приложение, которое использует OpenCV 3.1.Я скопировал файл lib_opencv_java.so в папку jniLibs.Теперь я хочу интегрировать новый SDK в свое приложение, но этот SDK также использует другую версию OpenCV.SDK OpenCV lib добавлен в Gradle, а не скопирован в папку jni.Когда я создаю приложение, оно выдает ошибку во время компиляции:

Было найдено более одного файла с независимым от ОС путем 'lib / arm64-v8a / libopencv_java3.so'

Для решения этой проблемы я переименовал свой OpenCV и восстановил .so файл с другим именем.После этого это не выдало вышеуказанную проблему, но когда я пытаюсь открыть свою деятельность, которая использует OpenCV.Приложение разбилось с ниже ошибками:

java.lang.UnsatisfiedLinkError: dlopen: не может найти символ «_ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE» ссылается «/data/app/io.xxxxxx-gilxH9B4dAHGtuXtU4Sl6Q==/lib/arm64/libProcess.sovation.

1 Ответ

0 голосов
/ 31 января 2019

Чтобы должным образом избавиться от ошибки ниже:

Найдено несколько файлов с независимым от ОС путем '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'
    }
    ...
}
...