Premiers pas avec Firebase Crashlytics

Ce démarrage rapide décrit comment configurer Firebase Crashlytics dans votre application avec le plugin Crashlytics Flutter afin que vous puissiez obtenir des rapports d'erreur complets dans la console Firebase.

La configuration de Crashlytics implique l'utilisation à la fois d'un outil de ligne de commande et de votre IDE. Pour terminer la configuration, vous devrez forcer la levée d'une exception de test pour envoyer votre premier rapport de crash à Firebase.

Avant que tu commences

  1. Si vous ne l'avez pas déjà fait, configurez et initialisez Firebase dans votre projet Flutter.

  2. Recommandé : pour obtenir automatiquement des journaux de fil d'Ariane afin de comprendre les actions des utilisateurs ayant conduit à un crash, un événement non fatal ou ANR, vous devez activer Google Analytics dans votre projet Firebase.

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

    • Si vous créez un nouveau projet Firebase, activez Google Analytics pendant le workflow de création du projet.

    Notez que les journaux de fil d'Ariane sont disponibles pour toutes les plateformes Android et Apple prises en charge par Crashlytics (à l'exception de watchOS).

Étape 1 : Ajoutez Crashlytics à votre projet Flutter

  1. Depuis la racine de votre projet Flutter, exécutez la commande suivante pour installer le plugin Flutter pour Crashlytics.

    Pour profiter des journaux de fil d'Ariane , ajoutez également le plugin 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. Depuis le 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 plugin Crashlytics Gradle requis à votre application.

  3. Une fois terminé, reconstruisez votre projet Flutter :

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

    • Plateformes Apple : assurez-vous que votre projet utilise la configuration de version recommandée (Flutter 3.12.0+ et plugin Crashlytics Flutter 3.3.4+) afin que votre projet puisse générer et télécharger automatiquement des symboles Flutter (fichiers dSYM) sur Crashlytics.

    • Android : utilisez la CLI Firebase (v.11.9.0+) pour télécharger les symboles de débogage Flutter. Vous devez télécharger les symboles de débogage avant de signaler un crash dû à une version de code obscurcie.

      Depuis le 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 Firebase Android (pas le nom de votre package)
        Exemple d'ID d'application Android Firebase : 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO /symbols : Le même répertoire que celui que vous transmettez à l'indicateur --split-debug-info lors de la construction de l'application

Étape 2 : Configurer les gestionnaires de crash

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 : Forcer un crash de test pour terminer la configuration

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

  1. Ajoutez du code à votre application que vous pouvez utiliser pour forcer la levée d’une exception de test.

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

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

  3. Forcez la levée de l'exception de test afin d'envoyer le premier rapport de votre application :

    1. Ouvrez votre application à partir de votre appareil de test ou de votre émulateur.

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

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

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


Et c'est tout! Crashlytics surveille désormais votre application pour détecter les plantages et, sur Android, les erreurs non fatales et les ANR. Visitez le tableau de bord Crashlytics pour afficher et étudier tous vos rapports et statistiques.

Prochaines étapes

,

Ce démarrage rapide décrit comment configurer Firebase Crashlytics dans votre application avec le plugin Crashlytics Flutter afin que vous puissiez obtenir des rapports d'erreur complets dans la console Firebase.

La configuration de Crashlytics implique l'utilisation à la fois d'un outil de ligne de commande et de votre IDE. Pour terminer la configuration, vous devrez forcer la levée d'une exception de test pour envoyer votre premier rapport de crash à Firebase.

Avant que tu commences

  1. Si vous ne l'avez pas déjà fait, configurez et initialisez Firebase dans votre projet Flutter.

  2. Recommandé : pour obtenir automatiquement des journaux de fil d'Ariane afin de comprendre les actions des utilisateurs ayant conduit à un crash, un événement non fatal ou ANR, vous devez activer Google Analytics dans votre projet Firebase.

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

    • Si vous créez un nouveau projet Firebase, activez Google Analytics pendant le workflow de création du projet.

    Notez que les journaux de fil d'Ariane sont disponibles pour toutes les plateformes Android et Apple prises en charge par Crashlytics (à l'exception de watchOS).

Étape 1 : Ajoutez Crashlytics à votre projet Flutter

  1. Depuis la racine de votre projet Flutter, exécutez la commande suivante pour installer le plugin Flutter pour Crashlytics.

    Pour profiter des journaux de fil d'Ariane , ajoutez également le plugin 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. Depuis le 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 plugin Crashlytics Gradle requis à votre application.

  3. Une fois terminé, reconstruisez votre projet Flutter :

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

    • Plateformes Apple : assurez-vous que votre projet utilise la configuration de version recommandée (Flutter 3.12.0+ et plugin Crashlytics Flutter 3.3.4+) afin que votre projet puisse générer et télécharger automatiquement des symboles Flutter (fichiers dSYM) sur Crashlytics.

    • Android : utilisez la CLI Firebase (v.11.9.0+) pour télécharger les symboles de débogage Flutter. Vous devez télécharger les symboles de débogage avant de signaler un crash dû à une version de code obscurcie.

      Depuis le 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 Firebase Android (pas le nom de votre package)
        Exemple d'ID d'application Android Firebase : 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO /symbols : Le même répertoire que celui que vous transmettez à l'indicateur --split-debug-info lors de la construction de l'application

Étape 2 : Configurer les gestionnaires de crash

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 : Forcer un crash de test pour terminer la configuration

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

  1. Ajoutez du code à votre application que vous pouvez utiliser pour forcer la levée d’une exception de test.

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

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

  3. Forcez la levée de l'exception de test afin d'envoyer le premier rapport de votre application :

    1. Ouvrez votre application à partir de votre appareil de test ou de votre émulateur.

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

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

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


Et c'est tout! Crashlytics surveille désormais votre application pour détecter les plantages et, sur Android, les erreurs non fatales et les ANR. Visitez le tableau de bord Crashlytics pour afficher et étudier tous vos rapports et statistiques.

Prochaines étapes