Firecasts Para Desarrolladores de Firebase
Hola, gracias por sintonizarnos en este Firecast.
Mi nombre es Doug Stevenson,
y te mostraré cómo empezar
a monitorizar bloqueos en tu app de Android
con Firebase Crash Reporting.
Imagina que has invertido gran cantidad de tiempo
en desarrollar y probar tu app de Android
y que la acabas de publicar en la Play Store para uso de todos.
Obviamente, quieres que tus usuarios
tengan la mejor experiencia posible con tu app.
Por eso, si hay algún error causándote problemas,
querrás saberlo lo antes posible para arreglarlo.
Para ayudarte en esto, puedes integrar el SDK de Firebase Crash Reporting
con una sencilla línea de configuración antes de la publicación.
Si nunca has integrado una funcionalidad de Firebase en tu app,
mira este otro video antes para empezar.
Después, puedes continuar desde aquí para utilizar el Firebase Crash Reporting.
Yo ya tengo una app que utiliza Firebase,
así que voy a integrarle el Crash Reporting.
Voy a abrir "build.gradle" de mi app
y encontrar el bloque de dependencias de proyecto.
Entonces agrego la dependencia para el Firebase Crash Reporting.
La última versión que tengo de esta entrada es 10.0.1.
Debemos encontrar y utilizar la última versión.
Luego sincronizo mi proyecto.
Y ya está.
Agregar la dependencia es todo lo que necesitas hacer
si quieres registrar los bloqueos de tu app.
No se escriben líneas de código adicionales.
Simplemente funciona.
Cuando ocurra una excepción que bloquee tu app,
recibirás dicha excepción con un trazado completo
en la Firebase console.
Para optimizar esto, hay algunos pasos adicionales
que puedes hacer con una pocas líneas de código
usando la API de Firebase Crash reporting.
Por ejemplo, puedes registrar los mensajes que aparezcan en un reporte de bloqueos
para entender mejor lo que estaba pasando
justo antes del bloqueo.
Y puedes reportar las excepciones que registres
si no sabes cómo manejarlas.
Estas se mostrarán como reportes no-fatales en la consola.
Generalmente no necesitas reportar las excepciones del catch,
pero puede ser útil para diagnosticar problemas inesperados o inusuales.
Agregaré algunas de estas llamadas ahora.
Primero, agregaré una línea de código para registrar un mensaje
que sé que aparecerá justo antes de reportar una excepción.
Luego reportaré una excepción falsa que crearé yo mismo.
Funciona igual que si hubiese encontrado una excepción
dentro del try/catch.
Ahora, voy a generar y publicar la app y a revisar el archivo de registro.
Si quiero ver el reporte, voy a cargar Firebase console para mi app
y seleccionar Crash Reporting del lado izquierdo.
Podemos ver que la consola para mi app me muestra mi excepción
como un error no fatal que no bloqueó la app.
Si hago clic, puedo ver los detalles del dispositivo.
En este caso, vemos que proviene de mi emulador.
El trazado completo también está aquí, además del mensaje que registré.
Después de arreglar el problema, puedo cerrar el error en el botón de Close
para que no se muestre nuevamente.
Cuando Firebase Crash Reporting descubra un nuevo bloqueo,
también recibiré una notificación por correo.
Este correo me provee algunos detalles básicos acerca del bloqueo
y un botón para poder verlo en la consola.
Debería tomar menos de un minuto
para que aparezca un reporte en la consola una vez enviado.
Cuando intentes hacer esto, asegúrate de tener buena conexión de red.
Y también intenta lanzar nuevamente la aplicación
para asegurarse de que cualquier reporte sin enviar
tenga tiempo de llegar a la consola.
Una app nueva como la mía no tiene muchos bloqueos interesantes que mostrar,
pero en el demo de Firebase puedes ver muchos datos más interesantes.
Puedes obtener acceso de solo lectura a ese proyecto
mediante el enlace en la descripción.
El demo se llama "Flood-It!" de Lab Pixies
el cual es un juego que puedes descargar de la Play Store.
Veamos cómo se ve ahora el reporte de bloqueos para esa app.
Este proyecto tiene asociadas
tanto una app de Android como una app de iOS.
Y selecciono ver los bloqueos para la version Android.
Aquí podemos ver el historial reciente de bloqueos
con detalles en la tabla de abajo,
ordenados por el número de veces que cada uno ha ocurrido.
Si hago clic en uno, me mostrará las trazas.
Si veo los detalles,
me muestra algunas estadísticas de este error particular.
Notemos que se puede observar cada evento de este bloqueo
haciendo clic en las flechas.
Toda la colección de bloqueos sería un issue.
Y un issue se forma basado en bloqueos
que se asemejan entre sí.
Todos representan el mismo error,
pero las trazas y los detalles de dispositivo
pueden diferir entre ellos.
Para un bloqueo individual
puedes ver la información detallada del dispositivo
en el momento del bloqueo.
En este error específico,
la parte más útil de la traza resulta estar escondida.
Así que lo voy a expandir.
Aquí puedes ver que el problema comienza en la actividad de pasos extra
en su método onResume().
Si me desplazo más abajo,
puedo ver un registro de lo que ocurrió justo antes del bloqueo.
Aquí hay algunos registros que fueron creados automáticamente
de los acontecimientos de Firebase Analytics
en el momento en que sucedieron.
Estos acontecimientos se registran automáticamente.
No es necesario escribir ningún código para que esto ocurra.
Y este es un recorrido básico de Firebase Crash Reporting.
Pero hay otras cosas que necesitas saber antes de publicar tu app en la Play Store.
Primero, asegúrate de separar lo que es entorno de desarrollo
del entorno de producción.
La manera habitual de hacerlo
es crear un nuevo proyecto Firebase para cada construcción.
De este modo, cualquier bloqueo que ocurra mientras desarrollas tu app
estará separado de aquellos
que le ocurrieron a tus usuarios en producción.
Puedes leer este artículo para más información.
Segundo, si utilizas ProGuard para ofuscar y reducir tu código,
deberás cargar los archivos de mapeo
generados para la app que publicaste en la tienda.
Podrías tanto cargarlos a la consola como usar un plugin para Gradle
para correr una prueba que realice la carga.
Asegúrate de leer la documentación sobre esto
porque no podrás leer las trazas
si no cargas los archivos de mapeo correctos.
Si tienes alguna pregunta acerca de Firebase Crash Reporting,
encuéntranos en Twitter con el hashtag #askFirebase
o en cualquiera de los canales de soporte de Firebase.
Me llamo Doug Stevenson.
Gracias por ver
y asegúrate de eliminar todos esos errores.
Gracias por ver nuestro video.
Echa un vistazo a los otros videos
y no olvides suscribirte al canal de Firebase en YouTube.