Comienza a usar Firebase Crashlytics

En esta guía de inicio rápido, se describe cómo configurar Firebase Crashlytics en tu app con el complemento de Flutter para Crashlytics a fin de 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

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

  2. Recomendación: Para obtener funciones como usuarios que no experimentan fallas, registros de rutas de navegación y alertas de velocidad, debes habilitar Google Analytics en tu proyecto de Firebase.

    Todas las plataformas de Android y Apple que son compatibles con Crashlytics (excepto watchOS) pueden aprovechar estas funciones de Google Analytics.

    Asegúrate de que Google Analytics esté habilitado en tu proyecto de Firebase: Ve a  > Configuración del proyecto > pestaña Integraciones y, luego, sigue las instrucciones en pantalla para Google Analytics.

Paso 1: Agrega Crashlytics a tu proyecto de Flutter

  1. Desde la raíz de tu proyecto de Flutter, ejecuta el siguiente comando para instalar el complemento de Flutter para Crashlytics:

    flutter pub add firebase_crashlytics
    
  2. 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 para Crashlytics necesario a tu app.

  3. Cuando termines, vuelve a crear el proyecto de Flutter:

    flutter run
    
  4. (Opcional) Si tu proyecto de Flutter usa la marca --split-debug-info (y, de forma opcional, la marca --obfuscate), debes usar Firebase CLI (v.11.9.0 o superior) para subir símbolos de Android.

    En el directorio raíz de tu proyecto de Flutter, ejecuta el siguiente comando:

    firebase crashlytics:symbols:upload --app=APP_ID PATH/TO/symbols

    El directorio PATH/TO/symbols es el mismo 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.

  1. 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 la Zone 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"),
    ),
    
  2. Compila y ejecuta tu app.

  3. Fuerza el lanzamiento de una excepción de prueba para enviar el primer informe de tu app:

    1. Abre la app desde tu emulador o dispositivo de prueba.

    2. En tu app, presiona el botón de excepción de prueba que agregaste con el código anterior.

  4. Ve al panel de Crashlytics en 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