Tengo un proyecto de Android con una actividad nativa. Esta actividad nativa usa una biblioteca compartida llamada "main" (archivo libmain.so) para comenzar. (con el código de ndk/samples/native-activity)Cómo usar una biblioteca compartida en actividad nativa
Esta aplicación funciona bien.
el módulo de archivo "principal" 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)
Ahora quiero añadir otra biblioteca compartida (por ejemplo, un motor de juego) que utiliza la biblioteca "principal". He creado un módulo de "juegos" (libgame.so).
Pero cuando enlazo el "principal" con el "juego", como este:
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 el código de cambios!
la aplicación no empezar ya y tengo este error en 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
Esta caída se debe a la adición de un enlace a una biblioteca compartida ...
Por qué vincular a una biblioteca compartida crea la la aplicación no se carga (bloqueo)?
¿Cómo puedo usar una biblioteca compartida en un proyecto nativo de Android (no-java/native-activity)?
(supongo que puede ser posible ... de lo contrario la actividad nativa es bastante limitada ...)
Gracias! :)
Gracias! Pero, ¿estás seguro? ¿Ya has probado esto? He intentado esto y he cambiado el orden ... el problema es el mismo (crash) [http://pastie.org/3308037](http://pastie.org/3308037) – Gaetan
Tengo exactamente el mismo problema que tú. Esto no lo solucionó. – Halsafar
Sí, mi respuesta fue incorrecta. Esto se considera un error: http://code.google.com/p/android/issues/detail?id=28329 Solución simple sería la subclase NativeActivity con actividad vacía que solo tiene llamadas System.loadLibrary() para cargar todas las bibliotecas necesarias . –