android-studio android-ndk shared-libraries

android studio - Vinculación de una biblioteca compartida en un proyecto de Android



android-studio android-ndk (1)

Tu jerarquía es incorrecta. Sigue estos pasos:

  1. Cree la carpeta ''lib'' en la carpeta jni y coloque sus bibliotecas compartidas según las carpetas de destino. Esto debería verse así: ''jni / lib / armeabi-v7a / libfinal.so''.

  2. Preconstruido solo estas .so libs que están en la carpeta jni / lib. Para esto, cambie esta línea LOCAL_SRC_FILES := libfinal.so a LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libfinal.so . Esto buscará la carpeta lib en la carpeta jni, y luego buscará libfinal.so lib en la carpeta de destino según su arquitectura de CPU.

  3. Tenga en cuenta sus scripts de gradle. Debería agregar su archivo Android.mk así,

    externalNativeBuild { ndkBuild { path ''src/main/jni/Android.mk'' } }

Después de compilar el archivo Android.mk, gradle coloca sus bibliotecas pre compiladas en la carpeta main / jni de acuerdo con los archios de destino. Para esto, agrega esta línea a gradle,

sourceSets.main { jni.srcDirs = [] jniLibs.srcDir ''src/main/libs'' }

Necesito importar una sola función escrita en un archivo C en un proyecto de estudio de Android. Esta función llama a otras funciones ubicadas en otros archivos (más de 50 archivos C y encabezados en total).

Este proyecto ya contiene un solo archivo C ++ ya que estoy usando NDK para compilar OpenCV4android.

He usado Mingw y GCC para compilar bibliotecas compartidas (libfinal.so) pero una vez que trato de importarlas gracias a NDKbuild obtuve este error sin sentido:

Error:Execution failed for task '':app:ndkBuild''. > Process ''command ''C:/SDK/ndk-bundle/ndk-build.cmd'''' finished with non-zero exit value 2

Aquí está el archivo Android.mk:

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) /some opencv stuff/ include $(CLEAR_VARS) LOCAL_MODULE := final LOCAL_SRC_FILES := libfinal.so LOCAL_EXPORT_C_INCLUDES := C:/SDK/NDKOpencvTest1/app/src/main/jni/include include $(PREBUILT_SHARED_LIBRARY)

La última línea es la que me da el error.

Aquí está la jerarquía del árbol:

http://imgur.com/a/G3I0y

También probé esta solución sin éxito: cómo compilar FFmpeg (ver 3.1.1) en Android Studio (ver 2.1.2)

He estado buscando lo que estoy haciendo mal durante horas ..

¡Muchas gracias por la ayuda!