Как импортировать готовую библиотеку * .so и вызывать ее из нового проекта? - PullRequest
1 голос
/ 23 февраля 2020

В настоящее время я работаю над проектом, который будет использовать готовую общую библиотеку. Но я довольно запутался в процессе импорта предварительно собранной библиотеки, а также в вызове методов из предварительно созданного класса из нового проекта java class.

Допустим,

  1. Проект A создал файлы libA.so для каждого ABI_ARCH.

  2. Я пытаюсь использовать их в своем проекте B.

Как правильно импортировать их и как вызывать методы libA.so, объявленные в A. Другими словами, как использовать открытые API libA.so?

1 Ответ

1 голос
/ 23 февраля 2020

В эти дни Google предварительно выпустила новую функцию , которая позволит легко повторно использовать встроенные библиотеки. Если вы еще не готовы перейти на Android Studio 4.0 и / или создать необходимые AAR для libA , вы можете использовать старые способы.

Существует три различных трека, в зависимости от характера вашего проекта B .

  1. Если загружается только libA.so из Java / Kotlin, достаточно указать jniLibs.src в build.gradle : Как добавить файлы .so в проект библиотеки android с помощью gradle 0.7 + . Обратите внимание, что все классы, которые имеют собственные методы, реализованные в libA.so , должны быть скопированы в Project B , сохраняя при этом их полные имена без изменений.

  2. Если второй проект использует ndk-build , вам следует include $(PREBUILT_SHARED_LIBRARY). Руководство по NDK содержит более свежие данные.

  3. Если в проекте используется CMake , вы используете add_library(… SHARED IMPORTED) . Документация Android Srudio объясняет другой сценарий ios.

Важно подчеркнуть небольшую разницу между ndk-build и CMake в их обработке готовых .so библиотек. В то время как ndk-build будет копировать эти библиотеки в каталог установки со всеми библиотеками, которые он создает, CMake не предоставляет эту помощь . Поэтому вы, вероятно, добавите папку, в которой хранится предварительно собранная библиотека, в jniLibs.src в build.ghradle (как в случае 1 выше).

Во всех 3 сценариях ios, убедитесь, что библиотеки, которые вы упаковали в ваш APK или AAB, лишены символов отладки.

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