Crash Reporting con Crashlytics

En Android, existe una alta probabilidad de que su aplicación se bloquee incluso después de haberla probado de forma manual y automática. Esto puede deberse a factores como la incompatibilidad con diferentes niveles de API, tamaños de pantalla, memoria del teléfono, disponibilidad de sensores de hardware y personalización de los proveedores para adaptarse a sus dispositivos individuales. Crashlytics te ayudará a diagnosticar estos problemas.

Los choques ponen a tus usuarios tristes y enojados. Es posible que incluso quieran desinstalar la aplicación si esto sucede con frecuencia. Luego, haga una mala revisión de su aplicación, dé una respuesta negativa en la tienda de juegos y luego instale la aplicación de su competidor. En este mercado de aplicaciones ya lleno y competitivo, hacer que sus usuarios estén contentos es vital para el éxito de su aplicación.

Es bastante imposible que tu aplicación no se bloquee, pero mantener tus choques al mínimo es muy importante. Durante el desarrollo y las pruebas, es posible que no haya encontrado una falla en particular, pero en producción cuando los usuarios la usan activamente, comenzará a ver fallas. El uso de una solución de informes de fallos robusta y potente es esencial para recopilar información sobre los bloqueos de su aplicación y para darle una idea de cómo puede solucionar el problema para mantener felices a sus usuarios.. 

En este tutorial, te mostraré cómo utilizar Crashlytics, una solución de informes de fallos gratuita y potente pero liviana, que forma parte del conjunto de herramientas para desarrolladores de Fabric que recientemente adquirió Google. Crearemos una aplicación simple que se bloquee cuando se hace clic en un botón, para que podamos obtener información sobre el bloqueo con Crashlytics. 

1. ¿Por qué usar Crashlytics??

Aquí hay algunas razones por las que puede querer usarlo: 

  • Fácil de configurar
  • Aplicaciones, usuarios y bloqueos ilimitados 
  • Alertas en tiempo real
  • Informe de fallos en tiempo real
  • Análisis de choques en profundidad
  • Seguimiento de excepciones
  • Informe de fallos fácil de compartir
  • Distribución de aplicaciones Beta
  • Una aplicación móvil gratuita para monitorear su aplicación sobre la marcha y obtener alertas en tiempo real para problemas críticos
  • Gratis!

2. Crea un proyecto de Android Studio

Primero, inicie Android Studio y cree un nuevo proyecto "CrashlyticsTutorial"con una actividad vacía llamada Actividad principal.

3. Instalar el complemento de tela

Primero debe tener una cuenta en Fabric para integrar Crashlytics en su aplicación. Así que complete los detalles requeridos y se le enviará un correo electrónico de confirmación.. 

Puede elegir integrar Fabric con su proyecto descargando el complemento de Android Studio, que modificará automáticamente los archivos necesarios para la integración, o modificando manualmente su construir.gradle expediente. Para este tutorial, usaremos la forma más fácil, que es con el complemento. 

Después de hacer clic en el enlace de confirmación, se te guiará para instalar el complemento:

Paso 1

Selecciona Android como plataforma. 

Paso 2

Para usuarios de Mac: seleccione Preferencias ...  desde el Android Studio / IntelliJ menú. Usuarios de Windows y Linux: seleccione Ajustes desde el Expediente menú. 

Paso 3

Seleccionar Complementos, haga clic en el Navegar por los repositorios botón, y la búsqueda de "Fabric para Android".

Etapa 4

Haga clic en el Instalar Botón de plugin para descargar e instalar el plugin.. 

4. Integración de Crashlytics

Paso 1

Para comenzar la integración de Crashlytics en su proyecto de Android Studio, ingrese sus credenciales para iniciar sesión. 

Paso 2

Seleccione el proyecto de Android CrashlyticsTutorial y haga clic en el Siguiente botón. 

Paso 3

Fabric mostrará una lista de todas las organizaciones que registró, así que seleccione la organización con la que desea asociar la aplicación y haga clic en Siguiente botón.

Etapa 4

La tela luego listará todos sus kits. Dado que este es un tutorial de Crashlytics, seleccione Crashlytics y haga clic en el Siguiente botón. 

Paso 5

Haga clic en el Instalar botón. 

Fabric quiere hacer cambios a tu construir.gradle, MainActivity.java y AndroidManifest.xml archivos,así que haz clic en el Aplicar botón para que los cambios ocurran.  

Paso 6

Cree y ejecute su aplicación para que podamos asegurarnos de que todo esté configurado correctamente. Si su aplicación se configuró correctamente, recibirá un correo electrónico enviado instantáneamente a la dirección de correo electrónico que utilizó para registrarse con Fabric. 

5. Viendo el Dashboard

Ahora que Crashlytics se ha integrado con éxito en nuestro proyecto, visite el panel principal para ver nuestra aplicación: CrashlyticsTutorial

Al hacer clic en un proyecto se abrirá el panel de control de Crashlytics, que mostrará una lista de los problemas encontrados. Hasta ahora no tenemos ninguno; Más adelante, volveremos a visitar este panel cuando hayamos creado deliberadamente un bloqueo.. 

Dentro del panel de control de Crashlytics del proyecto, obtendrá una visión general de los bloqueos. Puede filtrar bloqueos por versión de aplicación, eventos, días, estado (abierto, cerrado o todo), dispositivo, sistema operativo o actividad del usuario (aunque el kit de Respuestas debe estar habilitado para usar esta función). También puede ver el número total de bloqueos, no fatales, usuarios afectados y más. 

El kit de Respuestas le brinda estadísticas en tiempo real sobre cómo se está utilizando su aplicación, incluidos los números de usuarios activos, la duración de la sesión, la calificación de estabilidad y la retención. 

6. Creando deliberadamente un accidente

Entendiendo la diferencia entre choques y problemas

La diferencia entre bloqueos y problemas es que Crashlytics combina choques similares en problemas (líneas de código particulares que parecen estar provocando el mismo tipo de bloqueo). Por ejemplo, si se informaron 100,000 choques, estos pueden ser atribuibles a solo 60 problemas.

Vamos a crear deliberadamente un bloqueo y ver el problema registrado en el panel de control. 

Crear un diseño

Aquí esta la Actividad principal archivo de diseño:

  

los crashNow () Método

Modificar el Actividad principal clase para encender el crashNow () Método, que activará una excepción RuntimeException cuando se haga clic en el botón. 

paquete com.chikeandroid.crashlyticstutorial; importar android.os.Bundle; importar android.support.v7.app.AppCompatActivity; importar android.view.View; importar android.widget.Button; importar com.crashlytics.android.Crashlytics; importar io.fabric.sdk.android.Fabric; La clase pública MainActivity extiende AppCompatActivity private Button mCrashNowButton; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); Fabric.with (este, nuevos Crashlytics ()); setContentView (R.layout.activity_main); mCrashNowButton = (Button) findViewById (R.id.btn_crash_now); mCrashNowButton.setOnClickListener (new View.OnClickListener () @Override public void onClick (View view) crashNow (););  private void crashNow () lanza una nueva RuntimeException ("Esto es un crash"); 

Choque!

Ejecutar la aplicación y haga clic en el botón de bloqueo ahora. 

7. Revisando el Dashboard

Después de la caída exitosa, vuelva a visitar el panel para ver el problema que se registró al instante. También recibirá una notificación por correo electrónico de Fabric sobre el bloqueo. Hasta ahora, en el panel de control, tenemos un problema, un bloqueo y un usuario afectado. Puede buscar un problema específico con el nombre del archivo, el nombre del método, el número de línea o las notas del problema (solo término único).

Cuando hace clic en un problema, se abre una página en la que obtiene un informe detallado sobre el bloqueo. La página agrega todos los fallos que ocurrieron.. 

Las partes clave de esta interfaz de usuario son las siguientes:

1

El proyecto y el nombre del paquete, incluido el número de línea donde se produjo el bloqueo

2

Filtro de accidentes recientes

3

El número total de choques.

4

El número total de usuarios afectados por el accidente.

5

Alternar para marcar el problema cerrado o abierto

6

Gráfico del número de choques por día.

7

Botón para compartir el problema a través de Twitter o con los miembros de tu equipo.

8

El porcentaje de dispositivos estrellados con proximidad activada.

9

El porcentaje de accidentes que ocurrieron cuando la aplicación estaba enfocada 

10

El porcentaje de dispositivos colapsados ​​que fueron arraigados

11

Desglose de los nombres de modelos de dispositivos estrellados

12

Desglose del sistema operativo de dispositivos estrellados

13

Descargar el seguimiento de la pila de excepciones como un archivo .txt

14

Una vista expandible para el seguimiento de pila

15

Ver los detalles de cada informe de bloqueo individual.

En esta página, también puede ver notas y escribir notas sobre cada bloqueo.

8. Otras características de Crashlytics

Aplicación móvil de tela

Fabric también tiene una aplicación móvil gratuita disponible en Google Play Store. Con la aplicación móvil, recibe una notificación instantánea cada vez que se produce un bloqueo crítico, así como algunos datos que proporcionan información sobre el problema: un desglose de los dispositivos y las plataformas afectadas, el seguimiento completo de la pila, el número de usuarios afectados, que se ve afectado. , notas ingresadas sobre un problema y una opción para compartir el problema con los miembros del equipo. Todos estos datos se actualizan en tiempo real..  

Log Excepciones Atrapadas

Crashlytics también le permite registrar excepciones capturadas en un captura bloque usando Crashlytics.logException (Excepción).

pruebe myMethodThatThrows ();  catch (Exception e) Crashlytics.logException (e); // ¡Maneja tu excepción aquí! 

Todas las excepciones registradas aparecerán como problemas "no fatales" en el panel de Fabric. Crashlytics procesa excepciones en un subproceso dedicado en segundo plano, por lo que registrar una excepción no bloqueará la IU de la aplicación y el impacto en el rendimiento de tu aplicación será pequeño. 

Registro personalizado

Cuando registra una excepción, puede crear un mensaje de registro personalizado asociado con sus datos de bloqueo, y se mostrará en el panel de control de Crashlytics en ese accidente en particular. 

Crashlytics.log (int prioridad, String tag, String msg);

Además de aparecer en su informe, también se agregará a LogCat de Android. Para evitar que eso suceda, en su lugar usa:

Crashlytics.log (mensaje de cadena);

Como en el siguiente ejemplo:

void privado crashNow () Crashlytics.log ("Mi mensaje de registro"); lanzar una nueva excepción RuntimeException ("Esto es un fallo"); 

Identificar de forma única a los usuarios

Para identificar de forma única al usuario final de su aplicación en el panel de control para una fácil depuración, Crashlytics tiene los siguientes métodos: 

Crashlytics.setUserIdentifier ("12345"); Crashlytics.setUserEmail ("[email protected]"); Crashlytics.setUserName ("Test User");

Utilizar Crashlytics.setUserIdentifier para proporcionar un número de identificación, token o valor hash que identifique de manera única al usuario final de su aplicación sin revelar o transmitir ninguna de su información personal.

Distribución Beta 

Si desea distribuir su aplicación a un grupo de usuarios para realizar pruebas y obtener comentarios antes de finalmente lanzarla al público, Crashlytics tiene una herramienta gratuita muy útil llamada Beta. No voy a entrar aquí, pero echa un vistazo a los documentos oficiales para obtener más información. 

Deshabilitar Crashlytics para construcciones de depuración

Puede deshabilitar Crashlytics para compilaciones de depuración, lo que acelerará su proceso de compilación de depuración. 

Primero, agrega esto a tu construir.gradle expediente:

buildTypes … debug // Deshabilitar la generación de ID de creación de estructura para las configuraciones de depuración ext.enableCrashlytics = false

Luego, deshabilite el kit Crashlytics en tiempo de ejecución.

… @ Anular la anulación protegida onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); // Configurar Crashlytics, deshabilitado para compilaciones de depuración Crashlytics crashlyticsKit = new Crashlytics.Builder () .core (new CrashlyticsCore.Builder (). Disabled (BuildConfig.DEBUG) .build ()) .build (); Fabric.with (este, crashlyticsKit); setContentView (R.layout.activity_main); 

Conclusión

Crashlytics es muy potente y útil para informes de fallos efectivos. En este tutorial, aprendiste:

  • Cómo integrar Crashlytics en tu proyecto de Android
  • Cómo el panel de control de Crashlytics puede darle una idea de un problema
  • cómo registrar excepciones capturadas
  • cómo escribir registros personalizados
  • cómo identificar de forma única a sus usuarios para facilitar la depuración
  • cómo deshabilitar Crashlytics para las construcciones de depuración

Para obtener más información sobre Crashlytics, puede consultar su documentación oficial. También puede consultar algunos de nuestros otros tutoriales sobre servicios basados ​​en la nube para el desarrollo de Android..