Ho un progetto Android con un'attività nativa. Questa attività nativa utilizza una libreria condivisa denominata "main" (file libmain.so) per l'avvio. (con il codice di ndk/samples/attività nativa)Come utilizzare una libreria condivisa in attività nativa
Questa app funziona correttamente.
il file "principale" modulo Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue game
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
Ora voglio aggiungere un'altra libreria condivisa (ad esempio un motore di gioco) utilizzato dalla libreria "principale". Ho costruito un modulo "gioco" (libgame.so).
Ma quando collego il "principale" con il "gioco", in questo modo:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := main.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../game
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_LDLIBS += $(LOCAL_PATH)/../../libs/$(TARGET_ARCH_ABI)/libgame.so
LOCAL_STATIC_LIBRARIES := android_native_app_glue game
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
con il codice di cambiamenti!
l'applicazione non avviare più e non ho questo errore in Logcat:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mycompany.myproject/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/data/com.mycompany.myproject/lib/libmain.so
Questo incidente è dovuto all'aggiunta di link per una libreria condivisa ...
Perché il collegamento a una libreria condivisa rendono il l'app non si sta caricando (crash)?
Come posso utilizzare una libreria condivisa in un progetto Android nativo (no-java/native-activity)?
(Suppongo che sia possibile ... altrimenti l'attività nativa è piuttosto limitata ...)
Grazie! :)
Grazie! Ma sei sicuro? Hai già provato questo? Ho provato questo e cambiando l'ordine ... il problema è lo stesso (crash) [http://pastie.org/3308037](http://pastie.org/3308037) – Gaetan
Sto avendo lo stesso identico problema di tu. Questo non l'ha risolto – Halsafar
Sì, la mia risposta non era corretta. Questo è considerato un bug: http://code.google.com/p/android/issues/detail?id=28329 Simple workaround sarebbe una sottoclasse NativeActivity con attività vuota che ha solo chiamate System.loadLibrary() per caricare tutte le librerie necessarie . –