Загрузка сторонних общих библиотек из нативной активности Android

Я создал библиотеку 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)
15
задан mycroft.holmes 13 January 2012 в 00:20
поделиться