AndroidRuntime Causado por: java.lang.unsatisfiedLinkError: No se pudo cargar tfp_jni: findLibrary returned null

Por lo tanto, parece que hay un montón de problemas como el mío por ahí, pero no estoy seguro de que ninguno de ellos están relacionados con mi problema. DE ACUERDO. Tengo un proyecto de Android que utiliza un SDK como una biblioteca de referencia. El SDK contiene C ++, por lo que estoy utilizando la biblioteca android-ndk-r9. El SDK que referencia en mi proyecto de Android es una biblioteca de JNI (Oooooo – cosas asustadizas). Oh sí, no me dejes de olvidar mencionar armeabi-v7a (que parece ser otro tema de miedo). Mi error se produce cuando se ejecuta esta línea:

System.loadLibrary("tfp_jni"); 

Tfp_jni es realmente un archivo libtfp_jni.so bajo la carpeta armeabi-v7a en la carpeta libs de mi proyecto de biblioteca SDK. Ese proyecto de biblioteca SDK contiene un archivo Android.mk. No creo que el código esté entrando allí. Pero aquí está el contenido de ese archivo .mk:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := tfp-prebuilt LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libtfp_jni.so LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include include $(PREBUILT_SHARED_LIBRARY) 

Entonces en mi proyecto de Android, tengo una carpeta jni que contiene un Android.mk y un Application.mk. Aquí están los contenidos:

Android.mk

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) OPENCV_INSTALL_MODULES:=on OPENCV_INSTALL_CAMERA:=off include $(INNERID_ANDROID_ROOT)/Android.mk include $(OPENCV_ANDROID_ROOT)/sdk/native/jni/OpenCV.mk 

Application.mk

 APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi-v7a APP_PLATFORM := android-14 

Variables de entorno

Variables de entorno

Senderos y Símbolos – Incluye

Senderos y Símbolos - Incluye

Todas las demás pestañas están vacías, excepto la ubicación de origen y la ubicación de salida, que muestra la carpeta del proyecto.

Proyecto y preferencias de Android

Proyecto y preferencias de Android

He intentado varias otras respuestas de las preguntas similares en Stackoverflow sin éxito. Por favor, hágamelo saber si hay algo más que necesite ver y le daré la información adicional lo antes posible.

Gracias.

————————————————– ——- Nueva Imagen —————————————– ——–

Imgur

¡Corrección! El apk se encuentra en la carpeta de proyecto / bin de verificación-demostración. La biblioteca referenciada tfp_java.jar es el proyecto de la biblioteca SDK. Puede ver desde Finder que el archivo .so está en libs. ¿Ayuda esto?

Deben ocurrir varias cosas para que el vínculo con el trabajo

  1. La biblioteca nativa debe ser compilada en un archivo .so para la ABI (s) apropiada (s) – esto se logra típicamente a través del ndk-build / archivo por lotes, aunque también se puede hacer usando una herramienta independiente generada. Los proyectos IDE pueden configurar este proceso como un paso de compilación personalizado.

  2. La biblioteca nativa debe ser empaquetada en la aplicación .apk. Si se creó desde una carpeta jni / bajo un directorio de proyecto de aplicación, entonces ndk-build probablemente lo copió en un subdirectorio ABI-apropiado de la libs / carpeta del proyecto. Sin embargo, si la biblioteca nativa pertenece a una biblioteca de Android distinta, pueden ser necesarios pasos adicionales . En particular, no puede ser obtenido por el sistema de compilación desde una biblioteca .jar, por lo que uno asociado con el código de la biblioteca debe copiarse explícitamente bajo la libs / carpeta del proyecto del cliente o bien encontrarse haciendo referencia a un árbol de directorios de proyecto de biblioteca ( No un .jar solitario ) que lo incluye.

  3. El instalador del dispositivo debe decidir que uno de los archivos .so contenidos en el archivo .apk es apropiado para el ABI del dispositivo (arquitectura) y copiarlo desde el .apk en el directorio de instalación para su uso.

  4. Los nombres de enlace de tiempo de ejecución de las funciones jni (aguas abajo de cualquier nombre de compilador-manipulación) deben coincidir con los que la VM está buscando. Normalmente, los problemas aquí vienen de no codificar correctamente el nombre de clase completamente calificado de java en el nombre de la función nativa. La herramienta javah está pensada para ayudar a evitar tales errores, aunque con cuidado puede hacerse manualmente.

Cada uno de estos pasos presenta un desglose potencial, por lo que la depuración de un vínculo insatisfecho se puede abordar tratando de encontrar la primera etapa en la que el archivo .so desaparece.

  • Compruebe la calidad de la imagen antes del OCR
  • Animaciones explícitas para setAnimationStyle (), ¿cuáles son mis opciones?
  • Cómo devolver un valor de hilo en java?
  • Estructura de datos eficiente con dos teclas
  • Acceda a la impresora a través de Wifi desde el dispositivo Android
  • Cómo crear una animación de "relleno" en Android
  • Cómo utilizar KSoap 2 en android
  • NameValuePair obsoleta para openConnection
  • Creación de vínculos duros y enlaces simbólicos en Android
  • Cómo obtener la velocidad de desplazamiento en un ListView?
  • Android: tener autoridad de proveedor en el proyecto de la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.