Как импортировать стороннюю бинарную библиотеку в Android Studio 3.4? - PullRequest
0 голосов
/ 01 июля 2019

Backgroud:

Я бы хотел использовать стороннюю библиотеку в Android Studio 3.4.Библиотека включает в себя три файла: см. Фото

  • arm64-v8a / libAnalyticsLib.so
  • armeabi-v7a / libAnalyticsLib.so
  • StrideAnalyticsLib.jar.

Файлы классов в "StrideAnalyticsLib.jar" показывают, что они, похоже, созданы с использованием SWIG.

Я пробовал два способа импортировать эту библиотеку, но все еще не могу

  • import StrideAnalyticsLib. *;

    Но это не позволяет получить доступ к классам и показывает "не удается разрешить символ ...".

  • .so файлы с jniLibs

    ~ / main / jniLibs /

    ~ / main / jniLibs / arm64-v8a / libAnalyticsLib.so

    ~ / main / jniLibs / armeabi / libAnalyticsLib.so

  • .so файлы находятся в библиотеках;В то же время я добавил «sourceSets {main {jniLibs.srcDirs = ['libs']}}» в build.gradle;

    ~ / libs /

    ~ / libs / arm64-v8a / libAnalyticsLib.so

    ~ / libs / armeabi / libAnalyticsLib.so

Обе попытки сопровождаются очисткой и сборкой проекта. Я новичок в Android и не могу заставить его работать.Может ли кто-нибудь оказать помощь?Большое спасибо!

1 Ответ

0 голосов
/ 02 июля 2019

После изучения процесса с использованием SWIG для переноса библиотеки c / c ++ в файлы .jar и .so. Я понял, что .jar и .so будут иметь одинаковые имена пакетов, чтобы .jar мог вызывать файл .so,

Поскольку мой .jar не работает при сохранении в / libs, я вместо этого скопировал все классы в .jar и вставил их в папку / main.Не забудьте поместить их вне вашего пакета, в противном случае имя пакета этих классов будет изменено, что вызывает мою проблему.Способ импорта .so является правильным.Просто поместите .so файлы в / main / jniLibs.

...