Carregando bibliotecas compartilhadas de terceiros de uma atividade nativa do Android
Eu construí a biblioteca Assimp como uma biblioteca compartilhada. Eu o incluí no meu projeto Android ndk e ele é compilado, mas quando o carrego, recebo o seguinte erro: Não é possível carregar a biblioteca nativa: My-Native-Activity.
(Talvez eu deva acrescentar que minha atividade funciona bem quando a biblioteca não está incluída e que eu verifiquei o apk e o dispositivo; a biblioteca está sendo adicionada à pasta libs e instalada no dispositivo em / data / data / my-app / lib.)
Eu li muito e parece que a única maneira de resolver isso é carregá-los usando System.loadLibrary antes de iniciar minha atividade nativa. Acho que prefiro carregá-los dinamicamente usando o dlopen antes de adotar essa abordage
Estou correto ao supor que o Android não carregará automaticamente as bibliotecas compartilhadas das quais minha atividade nativa (ou seja, minha biblioteca compartilhada) depende?
Eu o criaria como uma biblioteca estática, mas tinha mais de 54Mb, o que não funcionari
Este é o meu Android.mk: tentei adicionar -lassimp a LOCAL_LDLIBS. Não tenho certeza se isso seria correto, mas não fez nenhuma diferenç
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)