добавление существующих библиотек jni (уже скомпилированных ". so") в другой проект android studio


Я не нашел никого, кто смог бы ответить на мой конкретный вопрос в интернете. У меня есть старый Android-проект, из которого я хочу скопировать некоторые библиотеки .so и вставить их в новый проект. Я новичок в этом деле,и я знаю, что мне нужно сказать моей новой программе, Где найти эти библиотеки, но я не знаю, следует ли мне использовать CMake или NDK для импорта уже скомпилированного кода. Вот как выглядит мой каталог:

Введите описание изображения здесь

Я вызываю эту библиотеку в своей программе, как это:

static {
        System.loadLibrary("serial_port");
    }

Но как я могу сказать компилятору, где найти эти скопированные и вставленные файлы?

Я запустил файл, основанный на документации из Android, но я запутался в нескольких вещах. Вот что у меня есть до сих пор:

# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.

cmake_minimum_required(VERSION 3.4.1)

# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add.library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.

add_library( # Specifies the name of the library.
             serial_port

             # Sets the library as a shared library.
             SHARED

             IMPORTED

             serial_port/src/${ANDROID_ABI}/libserial_port.so

             # Provides a relative path to your source file(s).
             src/main/cpp/libs/armeabi/libserial_port.so )

Я не думаю, что я делаю это правильно. Пожалуйста, взгляните и укажите мне правильное направление. Спасибо

2 4

2 ответа:

Вы должны хранить их внутри dir jniLibs в соответствующих папках.

Напр.

/приложение/src/главная/jniLibs/норм/libserial_port.так

И вам не нужно использовать какие-либо другие инструменты, такие как CMake, чтобы использовать их. Вы можете сразу загрузить их.

По умолчанию JNI forlder для Android Studio-этоjniLibs . Если вы поместите свои собственные библиотеки в эту папку, то она будет автоматически добавлена в путь сборки приложения.

В вашем случае вы поместили собственные коды в папку libs. Чтобы заставить его работать, вы должны указать свой новый путь JNI в app / build.gradle файл. Для этого можно использовать следующий скрипт gradle: - - -

android{

   sourceSets {
       main {
           jniLibs.srcDirs = ['libs']
       }
   }    

}