En esta guía de inicio rápido, se describe cómo configurar Firebase Crashlytics en tu app con el complemento de Flutter de Crashlytics para que puedas obtener informes de fallas completos en Firebase console.
La configuración de Crashlytics implica usar una herramienta de línea de comandos y el IDE. Para finalizar la configuración, deberás forzar una excepción de prueba a fin de enviar el primer informe de fallas a Firebase.
Antes de comenzar
Si aún no lo has hecho, configura y, luego, inicializa Firebase en tu proyecto de Flutter.
Recomendación: Para obtener automáticamente registros de rutas de navegación y comprender las acciones del usuario que conducen a una falla, un evento recuperable o de ANR, debes habilitar Google Analytics en tu proyecto de Firebase.
Si tu proyecto de Firebase existente no tiene habilitado Google Analytics, puedes habilitar Google Analytics en la pestaña Integraciones de
en > Configuración del proyectoFirebase console. Si quieres crear un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.
Ten en cuenta que los registros de rutas están disponibles para todas las plataformas de Android y Apple que son compatibles con Crashlytics (excepto watchOS).
Paso 1: Agrega Crashlytics a tu proyecto de Flutter
Desde la raíz de tu proyecto de Flutter, ejecuta el siguiente comando para instalar el complemento de Flutter para Crashlytics.
Para aprovechar los registros de rutas de navegación, también agrega el complemento de Flutter para Google Analytics a tu app. Asegúrate de que Google Analytics esté habilitado en tu proyecto de Firebase.
flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
En el directorio raíz de tu proyecto de Flutter, ejecuta el siguiente comando:
flutterfire configure
Ejecutar este comando garantiza que la configuración de Firebase de tu app de Flutter esté actualizada y, en el caso de Android, agrega el complemento de Gradle de Crashlytics necesario a tu app.
Cuando termines, vuelve a crear el proyecto de Flutter:
flutter run
(Opcional) Si tu proyecto de Flutter usa la marca
--split-debug-info
y, de forma opcional, también la marca--obfuscate
, se requieren pasos adicionales para mostrar seguimientos de pila legibles de tus aplicaciones.Plataformas de Apple: Asegúrate de que tu proyecto use la configuración de versión recomendada (Flutter 3.12.0 o una versión posterior y el complemento de Flutter de Crashlytics 3.3.4 o una versión posterior) para que genere y suba automáticamente símbolos de Flutter (archivos dSYM) a Crashlytics.
Android: Usa Firebase CLI (v.11.9.0+) para subir símbolos de depuración de Flutter. Debes subir los símbolos de depuración antes de informar una falla de una compilación de código ofuscada.
En el directorio raíz de tu proyecto de Flutter, ejecuta el siguiente comando:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID: El ID de la app para Android de Firebase (no el nombre del paquete)
ID de ejemplo de la app para Android de Firebase:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/symbols
: Es el mismo directorio que pasas a la marca--split-debug-info
cuando compilas la aplicación.
Paso 2: Configura controladores de fallas
Puedes detectar automáticamente todos los errores que se producen dentro del framework
de Flutter anulando FlutterError.onError
con
FirebaseCrashlytics.instance.recordFlutterFatalError
:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Pass all uncaught "fatal" errors from the framework to Crashlytics
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
runApp(MyApp());
}
Para detectar errores asíncronos que no administra el framework de Flutter, usa
PlatformDispatcher.instance.onError
:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
Para ver ejemplos de cómo controlar otros tipos de errores, consulta Personaliza los informes de fallas.
Paso 3: Fuerza una falla de prueba para finalizar la configuración
Para finalizar la configuración de Crashlytics y ver los datos iniciales en el panel de Crashlytics de Firebase console, debes forzar el lanzamiento de una excepción de prueba.
Agrega código a tu app para forzar el lanzamiento de una excepción de prueba.
Si agregaste un controlador de errores que llama a
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
a laZone
de nivel superior, puedes usar el siguiente código para agregar a tu app un botón que, cuando se presione, arroje una excepción de prueba:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
Compila y ejecuta tu app.
Fuerza el lanzamiento de una excepción de prueba para enviar el primer informe de tu app:
Abre la app desde tu emulador o dispositivo de prueba.
En tu app, presiona el botón de excepción de prueba que agregaste con el código anterior.
Ve al panel de Crashlytics de Firebase console para ver la falla de prueba.
Si actualizaste la consola y sigues sin poder ver la falla de prueba después de cinco minutos, habilita el registro de depuración para confirmar si tu app está enviando informes de fallas.
Eso es todo. Crashlytics ahora supervisa la app para detectar fallas y, en Android,
para detectar errores recuperables y de ANR. Visita el
panel de Crashlytics
para ver y analizar todos los informes y estadísticas.
Próximos pasos
Personaliza la configuración de informes de fallas agregando informes, registros y claves opcionales, así como seguimiento de errores recuperables.
Realiza integraciones en Google Play para poder filtrar los informes de fallas de tu app para Android por segmento de Google Play directamente en el panel de Crashlytics. Esto te permite enfocar mejor el panel en compilaciones específicas.
Consulta seguimientos de pila y estadísticas de fallas junto con tu código en la ventana App Quality Insights de Android Studio (disponible a partir de Electric Eel 2022.1.1).