Comience con Firebase Crashlytics

Este inicio rápido describe cómo configurar Firebase Crashlytics en tu aplicación con el complemento Crashlytics Flutter para que puedas obtener informes completos sobre fallos en Firebase console.

Configurar Crashlytics implica utilizar tanto una herramienta de línea de comandos como su IDE. Para finalizar la configuración, deberá forzar el lanzamiento de una excepción de prueba para enviar su primer informe de falla a Firebase.

Antes de que empieces

  1. Si aún no lo has hecho, configura e inicializa Firebase en tu proyecto Flutter.

  2. Recomendado : para obtener automáticamente registros de ruta de navegación para comprender las acciones del usuario que conducen a un evento de falla, no fatal o ANR, debe habilitar Google Analytics en su proyecto de Firebase.

    • Si su proyecto Firebase existente no tiene Google Analytics habilitado, puede habilitar Google Analytics desde la pestaña Integraciones de su > Configuración del proyecto en Firebase console.

    • Si estás creando un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.

    Tenga en cuenta que los registros de ruta de navegación están disponibles para todas las plataformas Android y Apple compatibles con Crashlytics (excepto watchOS).

Paso 1 : agrega Crashlytics a tu proyecto Flutter

  1. Desde la raíz de su proyecto Flutter, ejecute el siguiente comando para instalar el complemento Flutter para Crashlytics.

    Para aprovechar los registros de ruta de navegación , agregue también el complemento Flutter para Google Analytics a su aplicación. Asegúrese de que Google Analytics esté habilitado en su proyecto de Firebase.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. Desde el directorio raíz de su proyecto Flutter, ejecute el siguiente comando:

    flutterfire configure
    

    La ejecución de este comando garantiza que la configuración de Firebase de tu aplicación Flutter esté actualizada y, para Android, agrega el complemento Crashlytics Gradle requerido a tu aplicación.

  3. Una vez completado, reconstruya su proyecto Flutter:

    flutter run
    
  4. (Opcional) Si su proyecto Flutter usa el indicador --split-debug-info (y, opcionalmente, también el indicador --obfuscate ), se requieren pasos adicionales para mostrar seguimientos de pila legibles para sus aplicaciones.

    • Plataformas Apple: asegúrese de que su proyecto esté utilizando la configuración de versión recomendada (Flutter 3.12.0+ y el complemento Crashlytics Flutter 3.3.4+) para que su proyecto pueda generar y cargar automáticamente símbolos Flutter (archivos dSYM) en Crashlytics.

    • Android: use Firebase CLI (v.11.9.0+) para cargar símbolos de depuración de Flutter. Debe cargar los símbolos de depuración antes de informar un fallo debido a una compilación de código ofuscado.

      Desde el directorio raíz de su proyecto Flutter, ejecute el siguiente comando:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID : el ID de tu aplicación Firebase para Android (no el nombre de tu paquete)
        Ejemplo de ID de aplicación de Firebase para Android: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO /symbols : el mismo directorio que pasa al indicador --split-debug-info al crear la aplicación.

Paso 2 : configurar controladores de fallos

Puedes detectar automáticamente todos los errores que se generan dentro del marco 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 asincrónicos que no son manejados por el marco Flutter, use 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 manejar otros tipos de errores, consulte Personalizar informes de fallos .

Paso 3 : fuerce una prueba de bloqueo para finalizar la configuración

Para terminar de configurar Crashlytics y ver los datos iniciales en el panel de Crashlytics de Firebase console, debes forzar el lanzamiento de una excepción de prueba.

  1. Agregue código a su aplicación que pueda usar 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) al Zone de nivel superior, puedes usar el siguiente código para agregar un botón a tu aplicación que, cuando se presiona, arroja una excepción de prueba:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Cree y ejecute su aplicación.

  3. Fuerce el lanzamiento de la excepción de prueba para enviar el primer informe de su aplicación:

    1. Abra su aplicación desde su dispositivo de prueba o emulador.

    2. En su aplicación, presione el botón de excepción de prueba que agregó usando el código anterior.

  4. Vaya al panel de Crashlytics de Firebase console para ver el fallo de su prueba.

    Si actualizó la consola y aún no ve el fallo de prueba después de cinco minutos, habilite el registro de depuración para ver si su aplicación envía informes de fallos.


¡Y eso es! Crashlytics ahora monitorea su aplicación en busca de fallas y, en Android, errores no fatales y ANR. Visite el panel de Crashlytics para ver e investigar todos sus informes y estadísticas.

Próximos pasos

,

Este inicio rápido describe cómo configurar Firebase Crashlytics en tu aplicación con el complemento Crashlytics Flutter para que puedas obtener informes completos sobre fallos en Firebase console.

Configurar Crashlytics implica utilizar tanto una herramienta de línea de comandos como su IDE. Para finalizar la configuración, deberá forzar el lanzamiento de una excepción de prueba para enviar su primer informe de falla a Firebase.

Antes de que empieces

  1. Si aún no lo has hecho, configura e inicializa Firebase en tu proyecto Flutter.

  2. Recomendado : para obtener automáticamente registros de ruta de navegación para comprender las acciones del usuario que conducen a un evento de falla, no fatal o ANR, debe habilitar Google Analytics en su proyecto de Firebase.

    • Si su proyecto Firebase existente no tiene Google Analytics habilitado, puede habilitar Google Analytics desde la pestaña Integraciones de su > Configuración del proyecto en Firebase console.

    • Si estás creando un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.

    Tenga en cuenta que los registros de ruta de navegación están disponibles para todas las plataformas Android y Apple compatibles con Crashlytics (excepto watchOS).

Paso 1 : agrega Crashlytics a tu proyecto Flutter

  1. Desde la raíz de su proyecto Flutter, ejecute el siguiente comando para instalar el complemento Flutter para Crashlytics.

    Para aprovechar los registros de ruta de navegación , agregue también el complemento Flutter para Google Analytics a su aplicación. Asegúrese de que Google Analytics esté habilitado en su proyecto de Firebase.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. Desde el directorio raíz de su proyecto Flutter, ejecute el siguiente comando:

    flutterfire configure
    

    La ejecución de este comando garantiza que la configuración de Firebase de tu aplicación Flutter esté actualizada y, para Android, agrega el complemento Crashlytics Gradle requerido a tu aplicación.

  3. Una vez completado, reconstruya su proyecto Flutter:

    flutter run
    
  4. (Opcional) Si su proyecto Flutter usa el indicador --split-debug-info (y, opcionalmente, también el indicador --obfuscate ), se requieren pasos adicionales para mostrar seguimientos de pila legibles para sus aplicaciones.

    • Plataformas Apple: asegúrese de que su proyecto esté utilizando la configuración de versión recomendada (Flutter 3.12.0+ y el complemento Crashlytics Flutter 3.3.4+) para que su proyecto pueda generar y cargar automáticamente símbolos Flutter (archivos dSYM) en Crashlytics.

    • Android: use Firebase CLI (v.11.9.0+) para cargar símbolos de depuración de Flutter. Debe cargar los símbolos de depuración antes de informar un fallo debido a una compilación de código ofuscado.

      Desde el directorio raíz de su proyecto Flutter, ejecute el siguiente comando:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID : el ID de tu aplicación Firebase para Android (no el nombre de tu paquete)
        Ejemplo de ID de aplicación de Firebase para Android: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO /symbols : el mismo directorio que pasa al indicador --split-debug-info al crear la aplicación.

Paso 2 : configurar controladores de fallos

Puedes detectar automáticamente todos los errores que se generan dentro del marco 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 asincrónicos que no son manejados por el marco Flutter, use 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 manejar otros tipos de errores, consulte Personalizar informes de fallos .

Paso 3 : fuerce una prueba de bloqueo para finalizar la configuración

Para terminar de configurar Crashlytics y ver los datos iniciales en el panel de Crashlytics de Firebase console, debes forzar el lanzamiento de una excepción de prueba.

  1. Agregue código a su aplicación que pueda usar 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) al Zone de nivel superior, puedes usar el siguiente código para agregar un botón a tu aplicación que, cuando se presiona, arroja una excepción de prueba:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Cree y ejecute su aplicación.

  3. Fuerce el lanzamiento de la excepción de prueba para enviar el primer informe de su aplicación:

    1. Abra su aplicación desde su dispositivo de prueba o emulador.

    2. En su aplicación, presione el botón de excepción de prueba que agregó usando el código anterior.

  4. Vaya al panel de Crashlytics de Firebase console para ver el fallo de su prueba.

    Si actualizó la consola y aún no ve el fallo de prueba después de cinco minutos, habilite el registro de depuración para ver si su aplicación envía informes de fallos.


¡Y eso es! Crashlytics ahora monitorea su aplicación en busca de fallas y, en Android, errores no fatales y ANR. Visite el panel de Crashlytics para ver e investigar todos sus informes y estadísticas.

Próximos pasos