¿Puedes detectar un error de JNI en una biblioteca de terceros antes de un duro choque?

Estamos trabajando en una aplicación de Android. Estamos utilizando la biblioteca Chilkat para manejar la comunicación por correo electrónico y funciona bien. Aunque, puede haber un "problema" que involucre alguna comunicación JNI. De la investigación en Internet y la discusión con Chilkat, el problema puede implicar cómo EMOJI se procesan en los mensajes.

Periódicamente, recibimos un error que bloquea fuertemente la aplicación y proviene de la llamada a la biblioteca. Es una llamada de una sola línea que a veces se bloquea dependiendo de algo dentro del propio mensaje. Nuestra llamada es …

tmpstr=email.getHtmlBody(); 

El error de bloqueo duro que tenemos es:

JNI ERROR DETECTADO EN APLICACIÓN: entrada no es válida UTF-8 modificado: byte de inicio ilegal 0xf0

Una vez más, haciendo algunas búsquedas en Internet en este mensaje … esto aparentemente es un problema más común que nadie quiere, pero todavía tiene que ser abordado. Chilkat está trabajando en una solución, pero mientras tanto, tenemos que continuar con la aplicación.

¿Qué estoy tratando de averiguar si hay una manera que podemos detectar el error y evitar que la aplicación se estrelle … tal vez sólo marcando este mensaje y continuar con el siguiente mensaje?

Al ver cómo nunca he intentado atrapar un error de una biblioteca de terceros, no estoy seguro de dónde ir con esto.

Cualquier sugerencia o ejemplo que pudiera ayudar sería muy apreciado.

Bueno, dependiendo del error, siempre puedes intentar "arreglarlo". Trabajar con código heredado es siempre difícil y todo lo que puedes hacer aquí son algunos hacks.

Usted puede hacer pocas cosas aquí:

  1. intenta atrapar señales
  2. asegúrate de que tu aplicación no salga de tu JVM

Echa un vistazo aquí: http://jnicookbook.owsiak.org/recipe-No-015/ y aquí: http://jnicookbook.owsiak.org/recipe-No-016/

Tal vez encuentre alguna solución basada en estas muestras.

  • Jni Tutorial para android
  • Cómo obtener el tiempo de computación en NDK
  • Cómo conectar una biblioteca C a la aplicación de iOS
  • Android NDK y Gradle: Android.mk diferente por tipo de compilación
  • Configuraciones de firma de Android y conflicto con splits abi
  • Ciclo de vida de actividad de Android y ciclo de código nativo de JNI
  • Cómo ver la tabla de referencia local de JNI?
  • Firma de android apk con gradle-experimental: 0.2.0
  • ¿Produce código NDK optimizado para múltiples arquitecturas?
  • Ejecutar código en el subproceso principal / UI en Cocos2dx
  • Android NDK y C + + STL
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.