Как в NativeScript можно использовать *.so зависимости?

В NativeScript, фреймворке для разработки мобильных приложений на JavaScript или TypeScript, можно использовать библиотеки с расширением .so (shared object) для Android.

Для использования таких библиотек необходимо выполнить несколько шагов:

Шаг 1: Разместите библиотеку .so в папке libs вашего проекта. Обычно это папка app/App_Resources/Android/src/main/jniLibs/. Если папки jniLibs еще нету, вы можете создать ее вручную. Вы будете выбирать библиотеку с учетом архитектуры устройства, для которого вы хотите собрать приложение (например, armeabi-v7a, arm64-v8a, x86, x86_64 и т. д.).

Шаг 2: Обновите файл app/App_Resources/Android/src/main/AndroidManifest.xml, чтобы загрузить библиотеку. Для этого добавьте код следующего вида:

<application android:usesCleartextTraffic="true">
   <meta-data android:name="com.tns.NativeScriptApplication" 
              android:value="--expose_so_libs_paths --runtime_version 6.5.0" />
   ...
</application>

Обратите внимание на тег <meta-data> с атрибутами android:name и android:value. Атрибут android:name должен быть именно таким, как указан выше. Атрибут android:value должен содержать в себе параметры --expose_so_libs_paths и --runtime_version, где указывается версия NativeScript, например, 6.5.0.

Шаг 3: В JavaScript-коде вам нужно будет указать путь к вашей .so библиотеке и импортировать ее. Для этого можете использовать примерно следующий код:

declare const org: any; // Объявляем переменную org, чтобы использовать внешние библиотеки

const myLibrary = require("libName"); // Подключаем библиотеку

// Используем библиотеку
function myFunction() {
   const result = org.myLibrary.SampleFunction(); // Вызываем функцию из библиотеки
   console.log(result); // Выводим результат в консоль
}

Обратите внимание на конструкцию org.myLibrary.SampleFunction(). Здесь вы используете путь к вашей библиотеке и вызываете нужную функцию.

Это основные шаги для использования .so зависимостей в NativeScript приложении для Android. Не забудьте также обновить вашу npm-зависимость libName в package.json.

Удачи в разработке!