Проблема зависимостей Android Studio с библиотеками и jniLibs

У меня есть приложение, которое должно использовать OpenCV и другую стороннюю библиотеку. Я последовал этому инструкция stackoverflow, чтобы импортировать последнюю версию OpenCV (v3.4.3) и скопировать файлы .so в / app / src / main / jniLibs. Сторонняя библиотека упаковывается в виде файла aar и помещается в папку / app / libs.

Build.gradle моего приложения выглядит так:

dependencies {
implementation project(':openCVLibrary343')
implementation(name: 'custom', ext: 'aar')
...

В build.gradle также есть этот параметр, который (я думаю) инструктирует Android Studio искать стороннюю библиотеку в папке libs:

repositories {
flatDir {
    dirs 'libs'
}

Хотя код компилируется нормально, я обнаружил ошибку при попытке запустить приложение. В основном Android Studio жаловалась, что сторонняя библиотека больше не найдена. Но когда я использовал «Сборка> Анализировать APK», чтобы посмотреть, что находится внутри папки lib файла APK, я обнаружил, что файлы so из сторонней библиотеки действительно там были.

Есть ли у кого-нибудь подобная проблема? Некоторое время искал ответ, но не нашел ничего особенно актуального. Я использую Android Studio 3.2 с последней версией Gradle.

0
0
395
1

Ответы 1

ОК, я сам решил проблему. Проблема в том, что моя сторонняя библиотека предоставляет только файл .so для armeabi-v7a, тогда как OpenCV имеет множество других папок для разных систем. Если скопировать все папки в jniLibs, Android ожидает, что в папках, отличных от armeabi-v7a, будут те же файлы .so. Поэтому он пожаловался и остановил приложение.

Решение состоит в том, чтобы удалить все остальные папки OpenCV из папки jniLibs и оставить только armeabi-v7a.

Другие вопросы по теме