Premiers pas avec Firebase Crashlytics


Ce guide de démarrage rapide explique comment configurer Firebase Crashlytics dans votre application avec le plug-in Flutter Crashlytics afin d'obtenir des rapports d'erreur complets dans la console Firebase.

La configuration de Crashlytics implique l'utilisation d'un outil de ligne de commande et de votre IDE. Pour terminer la configuration, vous devez forcer le déclenchement d'une exception de test afin d'envoyer votre premier rapport d'erreur à Firebase.

Avant de commencer

  1. Si ce n'est pas déjà fait, configurez et initialisez Firebase dans votre projet Flutter.

  2. Recommandé : pour obtenir automatiquement des journaux de navigation permettant de comprendre les actions des utilisateurs ayant conduit à un plantage, une erreur non fatale ou un événement ANR, vous devez activer Google Analytics dans votre projet Firebase.

    • Si Google Analytics n'est pas activé dans votre projet Firebase existant, vous pouvez l'activer depuis l'onglet Intégrations de  > Paramètres du projet dans la console Firebase.Google Analytics

    • S'il s'agit d'un nouveau projet Firebase, activez Google Analytics pendant que vous le créez.

    Notez que les journaux de fil d'Ariane sont disponibles pour toutes les plates-formes Android et Apple compatibles avec Crashlytics (sauf watchOS).

Étape 1 : Ajoutez Crashlytics à votre projet Flutter

  1. À la racine de votre projet Flutter, exécutez la commande suivante pour installer le plug-in Flutter pour Crashlytics.

    Pour profiter des journaux de fil d'Ariane, ajoutez également le plug-in Flutter pour Google Analytics à votre application. Assurez-vous que Google Analytics est activé dans votre projet Firebase.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. À partir du répertoire racine de votre projet Flutter, exécutez la commande suivante :

    flutterfire configure
    

    L'exécution de cette commande garantit que la configuration Firebase de votre application Flutter est à jour et, pour Android, ajoute le plug-in Gradle Crashlytics requis à votre application.

  3. Une fois l'opération terminée, recréez votre projet Flutter :

    flutter run
    
  4. (Facultatif) Si votre projet Flutter utilise l'indicateur --split-debug-info (et éventuellement l'indicateur --obfuscate), des étapes supplémentaires sont nécessaires pour afficher des traces de pile lisibles pour vos applications.

    • Plates-formes Apple : assurez-vous que votre projet utilise la configuration de version recommandée (Flutter 3.12.0 ou version ultérieure et plug-in Flutter 3.3.4 ou version ultérieure) afin qu'il puisse générer et importer automatiquement les symboles Flutter (fichiers dSYM) vers Crashlytics.Crashlytics

    • Android : utilisez la CLI Firebase (v.11.9.0+) pour importer les symboles de débogage Flutter. Vous devez importer les symboles de débogage avant de signaler un plantage à partir d'une version de code obscurcie.

      À partir du répertoire racine de votre projet Flutter, exécutez la commande suivante :

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID : ID de votre application Android Firebase (et non le nom de votre package)
        Exemple d'ID d'application Android Firebase : 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols : répertoire que vous transmettez à l'indicateur --split-debug-info lors de la création de l'application.

Étape 2 : Configurer les gestionnaires d'erreurs

Vous pouvez détecter automatiquement toutes les erreurs générées dans le framework Flutter en remplaçant FlutterError.onError par 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());
}

Pour détecter les erreurs asynchrones qui ne sont pas gérées par le framework Flutter, utilisez 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());

}

Pour obtenir des exemples de gestion d'autres types d'erreurs, consultez Personnaliser les rapports d'erreur.

Étape 3 : Forcez un plantage du test pour terminer la configuration

Pour terminer la configuration de Crashlytics et afficher les données initiales dans le tableau de bord Crashlytics de la console Firebase, vous devez forcer le déclenchement d'une exception de test.

  1. Ajoutez à votre application du code que vous pouvez utiliser pour forcer le déclenchement d'une exception de test.

    Si vous avez ajouté un gestionnaire d'erreurs qui appelle FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) au Zone de premier niveau, vous pouvez utiliser le code suivant pour ajouter un bouton à votre application qui, lorsqu'il est enfoncé, génère une exception de test :

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Compilez et exécutez votre application.

  3. Forcez le déclenchement de l'exception de test pour envoyer le premier rapport de votre application :

    1. Ouvrez votre application depuis votre appareil de test ou votre émulateur.

    2. Dans votre application, appuyez sur le bouton de test d'exception que vous avez ajouté à l'aide du code ci-dessus.

  4. Accédez au tableau de bord Crashlytics de la console Firebase pour voir le plantage de votre test.

    Si vous avez actualisé la console et que le plantage du test ne s'affiche toujours pas au bout de cinq minutes, activez la journalisation du débogage pour voir si votre application envoie des rapports de plantage.


Et voilà ! Crashlytics surveille désormais les plantages de votre application et, sur Android, les erreurs non fatales et les erreurs ANR. Accédez au tableau de bord Crashlytics pour afficher et examiner tous vos rapports et statistiques.

Étapes suivantes