Java.lang.UnsatisfiedLinkError: ошибка dlopen: библиотека не найденаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Java.lang.UnsatisfiedLinkError: ошибка dlopen: библиотека не найдена

Сообщение Anonymous »

Я пытаюсь создать свой Android-проект (собственный) с помощью cmake (перенося его из экспериментального плагина gradle, где он работал нормально).

У меня есть некоторый собственный код (назовем его «a»), который использует другой внешний готовый библиотечный код (назовем его «b»), и я связал их следующим образом:
(согласно https://developer.android.com/studio/pr ... gure-cmake)

Код: Выделить всё

cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -frtti -fno-common -fexceptions")

include_directories(
#a's include files' paths
#b's include files' paths)

file(GLOB_RECURSE A_SOURCES
#a's source files' paths)

add_library(a_lib SHARED ${A_SOURCES})
add_library(b_lib SHARED IMPORTED)
set_target_properties(b_lib PROPERTIES IMPORTED_LOCATION "b's .so path")
target_link_libraries(a_lib b_lib)
Я выполнил этапы компиляции и связывания, и студия Android приступила к установке APK на мое устройство. Однако после запуска приложение зависает со следующим сообщением в лог-коде:

Код: Выделить всё

E/ExceptionHandler: Uncaught Exception java.lang.UnsatisfiedLinkError: dlopen failed: library "libb_lib.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:989)
at java.lang.System.loadLibrary(System.java:1530)
at com.mm.projectname.model.libloadingclassname.(libloadingclassname.java:99)
Я знаю, что это происходит, потому что .so b_lib отсутствует в APK. И я могу видеть символы b вместе с символами a в общей библиотеке a.

Поэтому мой вопрос заключается в том, как я могу
  • либо упаковать предварительно созданный .so моего b в apk
  • или запретить системе искать b.so в папке libs и заставить ее искать символы b только в .so a.
Я много искал похожие сообщения и вопросы (например, один и два), но ничего не получилось. Я действительно ищу правильный способ сделать это, который не создаст проблем в будущем (например, изменение целевой версии SDK). Я также попробовал собрать готовую библиотеку с последней версией ndk.

Возможно, я делаю очень небольшую ошибку, и был бы очень признателен, если бы кто-нибудь указал на это.

Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/520 ... -not-found
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»