Función nativa no se ha encontrado ninguna implementación

Problema: el 20% de los usuarios reciben:

Fatal Exception: java.lang.UnsatisfiedLinkError No implementation found for java.lang.String com.example.utils.API.getHashString(android.content.Context) (tried Java_com_example_utils_API_getHashString and Java_com_example_utils_API_getHashString__Landroid_content_Context_2) 

Para otra aplicación del 80% que funciona perfectamente, no hay excepción en mis dispositivos de prueba también. No puedo averiguar cuál es el problema.

EDIT1 : La biblioteca se carga perfectamente en la pantalla de bienvenida. No hay excepción en ese punto.

 static { System.loadLibrary("my-lib"); } 

EDIT2 : Acaba de reproducir el error. Es absolutamente al azar. La función de función de la aplicación funciona bien y en algún momento comienza a fallar. La única solución es volver a instalar la aplicación.

Después de mi comentario y comentarios posteriores de @ stanislav-parkhomenko, estoy repostando como una respuesta. ¡Gracias!

Mi comentario:

¿Dónde está ubicado el bloque estático {…}? Una posible razón para esto podría ser que el código no se ejecuta antes de algunas llamadas.

Y más tarde confirmó por sí mismo que esto era la causa:

El problema estaba en la inicialización de la biblioteca. Pantalla de inicio no siempre, debido a la funcionalidad de compartir, es por eso que algunas veces no se carga la biblioteca.

Gracias a Xavier Rubio Jansana por el consejo, que curó mi ceguera.

Me alegra que ayudó!

Este error se debe a la falta de coincidencia de firma de método entre Java y la biblioteca nativa que está cargando. Es probable que el 20% de los usuarios tengan una versión diferente del archivo de biblioteca con el mismo nombre. Si es tu propia biblioteca intenta darle un nombre relativamente único y cargarlo desde el camino absoluto para reducir la probabilidad de conflicto de nombres.

Parece que está intentando cargar una biblioteca nativa, y no hay soporte en Android Gradle para código nativo todavía. Debe revisar los documentos de su biblioteca para confirmarlos; Intenté buscarlo, pero parece que es una biblioteca comercial sin documentos accesibles al público.

Podrías poner los archivos jniLibs en la carpeta jniLibs en src/main . Esto se introdujo en AS 0.7.2

Como muestra, vea esto desde @CommonsWare , o vea esta página para muestras oficiales (desplácese al final de la página)

Sí Todavía no hay soporte para la biblioteca nativa en Android gradle.Just he seguido simple hack.It funciona muy bien. Mira esto

  • Android y JNI cómo pasar una matriz de datos Byte a JNI y recuperar Byte
  • ¿Debería evitarse también el finalizador de Java para la gestión del ciclo de vida de los objetos nativos?
  • Definir macro para registrar error con archivo y línea en android
  • C ++ ifstream.getline () significativamente más lento que BufferedReader.readLine () de Java?
  • Android JNI: root-making deadd00d (dvmAbort)
  • java.lang.UnsatisfiedLinkError: Método nativo no encontrado
  • Cómo llamar a Java API de subproceso de C ++ de NDK?
  • Pasar una matriz de Mats a código nativo
  • La compilación con NDK da error para los archivos de encabezado incluidos correctamente
  • ¿Cómo puedo capturar SIGSEGV (error de segmentación) y obtener un seguimiento de pila bajo JNI en Android?
  • Llamar al miembro de la clase JAVA desde el código nativo C / C ++
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.