Собственная библиотека не найдена в сборке Android? - PullRequest
1 голос
/ 13 апреля 2019

Я получаю эту ошибку: unable to lookup library path for, native render plugin support disabled при запуске приложения на Android.Я думаю, что неправильно создаю разделяемые библиотеки.

Я хочу собрать исходные файлы из этого репозитория .Я скажу мой процесс сборки, и, возможно, кто-то может определить шаг, который я пропускаю или делаю неправильно.

Следуя этому руководству , я придумал следующее:

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := libhydrogen
LOCAL_SRC_FILES := ..\hydrogen.c

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_PLATFORM := android-16
APP_OPTIM := release
APP_MODULES := libhydrogen

Next I:

  1. Размещены этифайлы в папке jni.
  2. Вызывается ndk-build.
  3. Скопировал файлы .so из папки \libs и поместил их в соответствующие папки в Unity (т.е. * 1033).*).
  4. Убедитесь, что их платформы и архитектуры процессоров были правильными.
  5. Построил мое приложение.

Здесь - это оболочка c #, которую яиспользую.Звонок Hydrogen.Library.Initialize(); дает мне эту ошибку. Здесь - полный logcat, связанный с этой ошибкой.

И в случае, если мой процесс сборки удастся исправить, и с файлами .so все в порядке;что еще может вызвать это?

Редактировать : Я пытаюсь собрать для armeabi-v7a и `x86. Здесь - подробности файла .so, может, там что-то не так?Я не знаком с c, и, поскольку я не слышал о том, чтобы кто-нибудь собирал эту библиотеку для android, я задаюсь вопросом: может ли быть что-нибудь в исходном файле c, которое несовместимо с процессом сборки NDK?

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Это была ошибка с Unity! По какой-то причине при переключении целевой платформы проекта некоторые мои файлы будут повреждены. Как ни странно, это только кажется, что происходит в этом одном проекте, но в любом случае (временное) решение состоит в том, чтобы повторно импортировать папку плагина всякий раз, когда я переключаю платформы.

0 голосов
/ 15 апреля 2019

Собственные библиотеки загружаются собственным компоновщиком системы, в вашем случае динамическим компоновщиком Linux: ld.so (иногда он меняет имена, поэтому я использовал это имя, так как вы можете проверить страницу руководства в документации с помощьюэто имя).

Для этого, как правило, необходимо предоставить переменную окружения LD_LIBRARY_PATH для виртуальной машины Java, чтобы она могла эффективно dlopen(3) it.

Thinkнасколько ваша система разработки может отличаться от целевой ... и вы легко доберетесь до этого.

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