Проблема зависимости Android Studio от libs и jniLibs - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть приложение, которое должно использовать 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 жаловалась, что сторонняя библиотека больше не найдена.Но когда я использовал «Build> Analyze APK», чтобы посмотреть, что находится внутри папки lib файла APK, я обнаружил, что файлы из сторонней библиотеки были на самом деле.

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

1 Ответ

0 голосов
/ 28 сентября 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...