Я построил библиотеку 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)