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.

2 Solutions collect form web for “Vinculación de bibliotecas de terceros (libs.a) con NDK”

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).

  • Error de libcurl CURLE_SSL_CACERT_BADFILE en android
  • Cómo pasar correctamente un archivo FileDescriptor a FFmpeg usando JNI en Android
  • No se puede acceder a AAssetManager en código nativo pasado de Java en WallpaperService
  • Android ffmpeg simple JNI envoltorio
  • Configuraciones de firma de Android y conflicto con splits abi
  • La llamada al método nativo dos veces de una biblioteca de terceros en una actividad hace que la aplicación de Android se cierre
  • Llamar a DeleteLocalRef en la interfaz nativa de java
  • Java.lang.UnsatisfiedLinkError: Método nativo no encontrado: Error en jni ()
  • No se ha encontrado JNI_Onload () y VM ha cerrado
  • Desbordamiento de ReferenceTable (máx = 512) JNI
  • FindClass de cualquier hilo en Android JNI
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.