#android #c #unity3d
#Android #c #unity3d
Вопрос:
Я получаю эту ошибку: 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
Далее я:
- Разместил эти файлы в
jni
папке. - Вызывается
ndk-build
. - Скопировал
.so
файлы изlibs
папки и поместил их в соответствующие папки в Unity (т.Е.HydrogenPluginsAndroidarm64-v8a
). - Убедился, что их платформы и архитектуры процессора были правильными.
- Создал мое приложение.
Вот оболочка c #, которую я использую. Hydrogen.Library.Initialize();
Затем вызов выдает мне эту ошибку. Вот полный logcat, связанный с этой ошибкой.
И в случае, если мой процесс сборки проходит правильно, и .so
файлы в порядке; что еще может привести к этому?
Редактировать: я пытаюсь создать для armeabi-v7a
и `x86. Вот сведения о файле .so, может быть, там что-то не так? Я не знаком с c, и, поскольку я не слышал, чтобы кто-нибудь создавал эту библиотеку для Android, мне интересно: может ли быть что-нибудь в исходном файле c, несовместимом с процессом сборки NDK?
Комментарии:
1. Какая у вас версия Unity?
2. @0xBFE1A8
2019.1.0b2
3. Серверные части сценариев?
4. Mono не поддерживает x64.
5. Попробуйте скомпилировать с архитектурой armeabi-v7a с бэкэндом mono scripting.
Ответ №1:
Собственные библиотеки загружаются встроенным компоновщиком системы, в вашем случае динамическим компоновщиком Linux: ld.so
(иногда он меняет имена, поэтому я использовал это имя, так как вы можете проверить справочную страницу в документации с этим именем).
Для этого, как правило, вам необходимо предоставить LD_LIBRARY_PATH
виртуальной машине Java переменную среды, чтобы она могла эффективно dlopen(3)
ее использовать.
Подумайте, насколько ваша система разработки может отличаться от вашей целевой …. и вы легко доберетесь до этого.
Комментарии:
1. Привет, если я не понимаю неправильно, я не думаю, что это является причиной моей проблемы, потому что у меня есть другие плагины, которые импортируются на том же устройстве.
Ответ №2:
Это была ошибка с Unity! По какой-то причине при переключении целевой платформы проекта некоторые из моих файлов будут повреждены. Как ни странно, кажется, что это происходит только в этом одном проекте, но в любом случае (временное) решение заключается в повторном импорте папки плагина всякий раз, когда я переключаю платформы.