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:
- Android Studio no logra leer paquetes mientras genera JavaDoc
- ¿Cómo puedo especificar una imagen de marcador de posición?
- ¿Cómo importar la clase de otro módulo en android studio?
- Implementa OnClickListener VS. Nuevo Button.OnClickListener () {};
- Acceso a vistas desde otro hilo (Android)
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
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
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 —————————————– ——–
¡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?
- Android obtiene programaticamente el uso de datos para una aplicación específica, por ejemplo: Uso de datos utilizado en "Facebook"
- Android ImageView Zoom con superposición de texto
- Abrir la aplicación de la galería desde Android Intent
- El evento de clic de botón de Android AppWidget no se recibe después de que el lanzador de inicio de fuerza detiene
- JSONException: no hay valor para XYZ al intentar getString ("XYZ")
- Cómo crear un servidor para la comunicación con una aplicación de Android
- Generación aleatoria flotante entre negativo y positivo opengl es java
- Uso de Retrofit para acceder a los arrays JSON
Deben ocurrir varias cosas para que el vínculo con el trabajo
-
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. -
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. -
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.
-
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.
- Android EditText fuerza el teclado numérico pero permite caracteres no numéricos
- Reconocimiento de voz sin cuadros de diálogo de Google