Crashlytics es la herramienta de gestión de errores y logging de Firebase. Fue creada en 2011 y posteriormente, en 2013, fue adquirida por Twitter por 100 millones de dólares.
En 2017, Google adquirió Crashlytics y lo incluyó en su suite, junto a Fabric y Answers. Fabric dejará de utilizarse en 2019 y será sustituido por Google Anayltics. Por lo tanto, Google está realizando una migración del producto, manteniendo Crashlytics, pero integrando el resto de productos.
Si usamos Crashlytics de manera independiente a Firebase, deberemos plantearnos la migración durante el año 2019. Por lo tanto, vamos a analizar el producto que sigue integrado dentro de la suite de Crashlytics para ver todo su potencial.
Hay dos características que hicieron famoso Crashlytics en sus comienzos:
Cuando se creó Crashlytics, había un gap bastante importante que cubrir en el mundo del desarrollo móvil: el reporting de errores proveniente de los usuarios de nuestras aplicaciones.
Hasta ese momento, se creaban grupos de testeo para las aplicaciones, pero era insuficiente, ya que las configuraciones locales (idiomas, franjas horarias) y la segmentación de los móviles llevaba a errores muy difíciles de reproducir en la fase de testing.
Ese problema generó una solución que nos permitía conocer los motivos de los crashes en todas las instalaciones de nuestra app.
A partir de ahí, la solución fue creciendo, permitiendo emitir informes agrupados por errores, tracking de errores por versiones y una serie de herramientas clave, sobre todo cuando nuestra aplicación era descargada de manera masiva.
Los pilares fundamentales de Crashlytics son:
Crashlytics aglutina toda la información relativa a los fallos de nuestra aplicación y analiza cada uno de ellos.
Podremos obtener la gravedad de cada fallo y si se han corregido con el cambio de versiones o siguen ocurriendo con el paso del tiempo.
Crashlytics ofrece Crash Insights, sugerencias útiles que destacan problemas de estabilidad comunes y proporcionan recursos que los hacen más fáciles de solucionar, priorizar o resolver.
Crashlytics permite capturar los errores de tu app como eventos app_exception en Analytics. Los eventos simplifican la depuración, ya que te brindan acceso a una lista de otros eventos que causan cada falla. Además, proporcionan estadísticas de público, debido a que te permiten extraer informes de Analytics de los usuarios que experimentaron fallas.
Recibe alertas en tiempo real sobre problemas nuevos, recurrentes y crecientes que podrían requerir tu atención inmediata.
Estos son los siguientes pasos para integrar Crashlytics en nuestra app:
Podemos conseguir más estadísticas sobre los errores, a través de cuatro mecanismos ofrecidos por Crashlytics:
Las claves personalizadas sirven para obtener el estado concreto de la app en el momento del error. Para ello, podemos asociar claves-valor definidos por nosotros y verlos en los reportes.
Se admiten hasta 64 pares clave-valor. A partir de ese límite, los valores adicionales no se guardarán. Además, cada clave-valor puede tener un tamaño máximo de 1 KB.
Si necesitamos más detalle sobre los eventos previos a un error o crash, podemos agregarlos mediante las funciones de Crashlytics CLS_LOG.
Por ejemplo, podríamos mostrar un conjunto de parámetros, un diccionario de configuración o lo que pensemos que puede ser de utilidad para realizar una traza sobre el error.
Además, podremos ver la información de lo que estamos registrando en la consola del simulador, ya que pasa por el framework de logging del dispositivo.
Podemos asignar un identificador anónimo para vincular los errores con los dispositivos en los que se han generado.
Para agregar los identificadores, debemos asignar un identificador único con un número, un token o un valor de hash.
Si es necesario borrar un identificador, debemos pasar la cadena vacía para reiniciarlo.
Además de las excepciones que genera el sistema, Crashlytics permite registrar excepciones no fatales.
Para hacer esto, debemos utilizar:
El método recordError requiere conocer la estructura con detalle, ya que el uso incorrecto puede provocar comportamientos indeseados y debido a esto Crashlytics puede limitar la creación de informes de errores registrados en la app.
El objeto NSError tiene tres argumentos:
Al hacer esto, creamos un problema nuevo y se agrupa por NSSomeErrorDomain, con código -1001. Todos los errores adicionales que tengan el mismo valor de dominio y código, se agruparán en este problema.
Ten en cuenta que registrar un NSError puede ser bastante caro. Cuando haces la llamada, Crashlytics captura la pila de llamadas del subproceso actual con un proceso llamado "liberación de pila".
Este proceso puede consumir una gran cantidad de recursos de CPU y E/S, en particular en arquitecturas que admiten la liberación de DWARF (arm64 y x86).
Cuando se completa la liberación, la información se escribe en el disco de manera asíncrona. Esto evita perder los datos si se produce un bloqueo en la línea siguiente.
Si bien es seguro llamar a esta API en un subproceso en segundo plano, recuerda que si despachas esta llamada a otra fila se perderá el contexto del seguimiento de pila actual.
Gracias a Cloud Functions, podemos agilizar la notificación de errores ocurridos en nuestra app.
Algunas de las cosas que podemos hacer son:
Para poder enlazar los eventos de errores con Cloud Functions, disponemos de IssueBuilder, que nos permite registrar 3 tipos de eventos:
Cuando ocurre un problema, se encapsula en la interfaz Issue, que cuenta con los siguientes atributos:
La integración de Crashlytics en tu app te permite obtener valiosos datos sobre las fallas y problemas que puedan surgir durante su funcionamiento. Con esta herramienta, puedes registrar y analizar los app crashes, lo que te brinda una visión clara del impacto que tienen en tus usuarios.
Crashlytics utiliza técnicas de agrupación inteligente para agrupar los errores similares y proporcionar informes detallados sobre cada problema. Esto te permite identificar rápidamente las áreas problemáticas de tu app y tomar medidas para solucionar los errores.
Además, con la integración de Crashlytics en Android Studio, puedes hacer clic directamente en los informes de errores para ver el código fuente relacionado y facilitar el proceso de depuración.
En resumen, Crashlytics es una función esencial para garantizar la estabilidad y calidad de tu app, brindándote los datos necesarios para mejorar continuamente su rendimiento y la experiencia de tus usuarios.
Si deseas obtener más información sobre Firebase Crashlytics y aprender a utilizar esta poderosa herramienta de gestión de errores en tus aplicaciones, te invitamos a visitar nuestra página del curso especializado en Firebase. En ella encontrarás recursos y materiales que te guiarán paso a paso en la integración de Crashlytics, la configuración de informes personalizados, la solución de problemas y mucho más. No pierdas la oportunidad de optimizar la estabilidad y calidad de tu app con Firebase Crashlytics. ¡Explora nuestro curso ahora mismo y lleva tu desarrollo de aplicaciones móviles al siguiente nivel!
¡Me interesa!