LINUX.ORG.RU
ФорумMobile

Добавление готовой библиотеки в Android NDK проект (UnsatisfiedLinkError)

 , ,


0

1

Я пытаюсь собрать GTA SA Mobile + SAMP Android + BASS (библиотека для звука), но приложение вылетает после запуска.

Само приложение запускается нормально, но как только я подключаю в неё сторонние библиотеки (пробовал libsqliteX.so, вылет), то после запуска приложения происходит вылет, логи ниже прикреплены.

Сам проект собираю через cygwin + APK Easy Tool -> compile.

APK: https://yadi.sk/d/hAiFuNFEDpn0vA

Лог: https://pastebin.com/yECu4uHf

Android.mk файл https://pastebin.com/4wTHzrLb

Application.mk файл https://pastebin.com/Xd25rdsW

Структура файлов: https://pastebin.com/G7bTAg2b

Исходники SAMP Android если что. (Я изменил только Android.mk файл и закинул библиотеки BASS во внутрь vendor папки) https://github.com/4x11/build69

Не могу понять в какую сторону копать, почему возникает данная проблема.

Мои шаги:

Собираю libsamp.so через cygwin

Беру libsamp.so и другие «BASS» библиотеки и кладу их внутрь APK (build69v108.apk\lib\armeabi-v7a)

Запускаю APK Easy Tool -> compile

Запускаю приложение

Тестирую на телефоне:

Redmi Note 7

Android ver: 9 PKQ1. 180904.001

MIUI ver: MIUI Global 10.21 stable

Core ver: 4.4.153-perf+

UPD: Удалось загрузить только через dlopen, но теперь проект не собирается до конца. Если использовать precompiled shared libraries, то приложение компилируется, но после запуска вылетает как и до этого.

https://pastebin.com/bWKMrbGs

Лог зависимостей .so файлов:

https://pastebin.com/RusYNNuD


Добавление готовой библиотеки в Android NDK проект (UnsatisfiedLinkError)

Возможно тебе нужно найти ту часть Java-кода из этого APK, где подгружаются нативные библиотеки, типа:

static {
    System.loadLibrary("libsamp");
    System.loadLibrary("ImmEmulatorJ");
    System.loadLibrary("SCAnd");
    System.loadLibrary("GTASA");
}

Если код закрыт, наверное стоит разобрать APK через apktool и попытаться отредактировать эти секции в smali, добавив нужные библиотеки.

Возможно стоит сделать так, как собственно этот libsamp подъинекчен в оригинальную игру. Видимо через разбор и патчинг библиотеки libGTASA.so, в который добавили вызов dlopen().

EXL ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.