Vinculación de bibliotecas de terceros (libs.a) con NDK

Estoy construyendo un apk de Android que usa algunas bibliotecas nativas de un tercero, estas libs están en Static Object Code Library (archivos .a) y necesito escribir un wrapper JNI para acceder a estas funciones en Java.

Esas libs ya están compiladas con un compilador cruzado y son de forma nativa para Android.

¿Cómo puedo compilar mis fuentes JNI enlazando a las funciones de los archivos .a libs?

Este es mi Android.mk

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_LDLIBS := -llog LOCAL_MODULE := ndk1 LOCAL_SRC_FILES := native.c include $(BUILD_SHARED_LIBRARY) 

Cuando compilo, recibo sólo el archivo native.c compilado.

Para hacer eso.

Tengo que declarar estas libs como módulos. Como el siguiente.

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := curl LOCAL_SRC_FILES := libcurl.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include include $(PREBUILT_STATIC_LIBRARY) 

Con un archivo libcurl.a en la misma carpeta que este archivo Android.mk y un / include fodler con los encabezados.

Ahora en el módulo principal sólo declarar la lib y el Android NDK se encargará del resto.

 LOCAL_PATH := $(call my-dir) include $(call all-subdir-makefiles) include $(CLEAR_VARS) LOCAL_LDLIBS := -llog -ldl LOCAL_MODULE := rmsdk LOCAL_SRC_FILES := curlnetprovider.cpp native.c LOCAL_STATIC_LIBRARIES := curl include $(BUILD_SHARED_LIBRARY) 

Nota .. debe incluir el archivo Android.mk del módulo antes de usarlo. Lo hago con la llamada all-subdir-makefiles.

Tus libs tienen que ser compilados para tu objetivo específico (Arm), para hacer eso creo que tienes que usar la cadena de herramientas como se describe en docs / STANDALONE-TOOLCHAIN.html (en tu carpeta ndk-r5).

  • Android cómo mantener la biblioteca nativa cuando la aplicación se detuvo
  • JNI- java.lang.UnsatisfiedLinkError: Método nativo no encontrado
  • Android ffmpeg .so descargar
  • Falta de correspondencia entre la firma del método y la llamada real
  • ¿Android realmente no tiene wchar_t?
  • Llamar a System.loadLibrary dos veces para la misma biblioteca compartida
  • Llamar al miembro de la clase JAVA desde el código nativo C / C ++
  • Cómo utilizar correctamente NDK-Build en Android Studio 2.2 Vista previa 1
  • CLI en DalvikVM falla en JNI lib
  • ¿Cómo utilizar NDK? Comenzando con la aplicación "hola mundo"
  • Android ICS: intento de error JNI para usar referencia local obsoleta 0x1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.