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:
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''.
Preconstruido solo estas .so libs que están en la carpeta jni / lib. Para esto, cambie esta línea
LOCAL_SRC_FILES := libfinal.so
aLOCAL_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.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:
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!