Я отслеживаю сбои в нашем приложении для Android (которое использует NDK для загрузки специальной библиотеки C++) с помощью службы отчетов о сбоях. У небольшого количества пользователей наблюдается следующий сбой:
java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH in "cpplibrary.so" (built with --hash-style=gnu?)
at java.lang.Runtime.loadLibrary(Runtime.java:365)
at java.lang.System.loadLibrary(System.java:526)
Пару упоминаний об этой ошибке, которые я могу найти в Интернете (например, в этом сообщении в группах Google), обсуждаются проблемы со сборкой библиотек, из-за которых эта ошибка возникает каждый раз, когда приложение запускается. бегать. Информации о том, почему это может происходить спорадически, мало. Этот пост — самый близкий, который я смог найти.
Судя по следам сбоев, похоже, что любой конкретный пользователь будет сталкиваться с этим постоянно в течение длительного времени; Я не уверен, смогут ли эти пользователи когда-либо правильно загрузить библиотеку. Есть ли у кого-нибудь идеи о том, что может привести к тому, что это произойдет только иногда? Могу ли я выполнить сборку NDK по-другому, чтобы попытаться остановить ее?
Спасибо!
Изменить: в этом сообщении упоминаются два способа условного получения таких ошибок; Я буду изучать их.
Edit2: Файлы сборки:
Android.mk (отрывок):
include $(CLEAR_VARS)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_C_INCLUDES := ...
LOCAL_CFLAGS := -DANDROID -Wall
LOCAL_CPPFLAGS := -DENABLE_SDK_DEBUGGING=1 -DENABLE_SDK_LOGGING=1
LOCAL_MODULE := cpplibrary
LOCAL_SRC_FILES := / ...
LOCAL_LDLIBS := -llog -landroid
LOCAL_STATIC_LIBRARIES := cpplibrary
include $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_STL := stlport_static
APP_CFLAGS += -std=c++11
Подробнее здесь: https://stackoverflow.com/questions/286 ... ng-dt-hash
Android NDK UnsatisfiedLinkError: «Ошибка dlopen: пустой/отсутствует DT_HASH» ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение