Я создал библиотеку Assimp как разделяемую библиотеку. Я включил ее в свой проект Android ndk, и он нормально собирается, но когда я загружаю его, я получаю следующую ошибку: Unable to load native library: My-Native-Activity.
(Возможно, я должен добавить, что моя активность работает нормально, когда библиотека не включена, и что я проверил apk и устройство; библиотека добавляется в папку libs и устанавливается на устройство в /data/data/my-app/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)