Ho costruito la libreria di Assimp come libreria condivisa. L'ho incluso nel mio progetto Android ndk e funziona bene, ma quando lo carico viene visualizzato il seguente errore: Impossibile caricare la libreria nativa: My-Native-Activity.Caricamento di librerie condivise di terze parti da un'attività nativa di Android
(Forse dovrei aggiungere che la mia attività funziona bene quando la libreria non è inclusa e che ho controllato l'apk e sul dispositivo, la libreria viene aggiunta alla cartella libs e installata sul dispositivo in/data/data/my-app/lib.)
Ho letto molto e sembra che l'unico modo per risolverlo sia caricarli utilizzando System.loadLibrary prima di avviare la mia attività nativa. Penso che preferirei caricarli dinamicamente usando dlopen prima di adottare questo approccio.
Sono corretto nel presupporre che Android non caricherà automaticamente le librerie condivise la mia attività nativa (vale a dire la mia libreria condivisa) dipende da?
Lo vorrei costruire come libreria statica ma era oltre 54 Mb che non funzionerà.
Questo è il mio Android.mk: Ho provato ad aggiungere -lassimp a LOCAL_LDLIBS. Non sono sicuro che sarebbe corretto, ma non ha fatto alcuna differenza.
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)
Sto lavorando a questo problema adesso. Posso vedere la mia libreria .so condivisa che appare nella cartella dei dati. Comunque android_main non viene mai chiamato, se compilo la libreria principale che collega la condivisione non verrà caricata. – Halsafar
Hai provato a lavorare su Android? Potresti inserire qualche codice di esempio su github? Ho problemi con il caricamento dalla directory delle risorse. Assimp consente di implementare il tuo IOSystem e IOStream ma non riesco a farlo funzionare! TXN! –