Я построил библиотеку Assimp как общую библиотеку. Я включил его в свой проект Android ndk, и он отлично работает, но когда я его загружаю, я получаю следующую ошибку: Невозможно загрузить собственную библиотеку: My-Native-Activity.
(Возможно, я должен добавить, что моя работа отлично работает, когда библиотека не включена и что я проверил apk и на устройстве, библиотека добавляется в папку libs и устанавливается на устройство в/data/данные/мой-приложение/Lib.)
Я много читал, и кажется, что единственный способ решить это - загрузить их с помощью System.loadLibrary, прежде чем запускать мою собственную активность. Я думаю, что предпочитаю загружать их динамически, используя dlopen, прежде чем принимать этот подход.
Правильно ли я полагаю, что Android не будет автоматически загружать разделяемые библиотеки, зависит от моей основной активности (то есть моя разделяемая библиотека)?
Я бы построил его как статическую библиотеку, но это было более 54 Мб, которые не будут работать.
Это мой Android.mk: Я попытался добавить -lassimp в LOCAL_LDLIBS. Я не уверен, что это было бы правильно, но это не имело никакого значения.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := assimp
LOCAL_SRC_FILES := libassimp.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := native-activity
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_SHARED_LIBRARIES := assimp
LOCAL_CPPFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_CFLAGS := $(LOCAL_CPPFLAGS)
TARGET_ARCH_ABI := armeabi-v7a
LOCAL_C_INCLUDES += $(LOCAL_PATH)
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)