Erste Schritte mit Firebase Crashlytics


In dieser Kurzanleitung wird beschrieben, wie Sie Firebase Crashlytics in Ihrer App mit dem Firebase Crashlytics SDK einrichten, damit Sie umfassende Absturzberichte in der Firebase-Konsole erhalten.

Für die Einrichtung von Crashlytics sind Aufgaben sowohl in der Firebase-Konsole als auch in Ihrer IDE erforderlich, z. B. das Hinzufügen einer Firebase-Konfigurationsdatei und des Crashlytics SDK. Um die Einrichtung abzuschließen, müssen Sie einen Testabsturz erzwingen, damit Ihr erster Absturzbericht an Firebase gesendet wird.

Hinweis

  1. Fügen Sie Ihrem Unity-Projekt Firebase hinzu, falls noch nicht geschehen. Wenn Sie kein Unity-Projekt haben, können Sie eine Beispiel-App herunterladen.

  2. Empfohlen: Wenn Sie automatisch Navigationspfadlogs erhalten möchten, um Nutzeraktionen zu verstehen, die zu einem Absturz, einem nicht schwerwiegenden Ereignis oder einem ANR-Ereignis geführt haben, müssen Sie Google Analytics in Ihrem Firebase-Projekt aktivieren.

    • Wenn Google Analytics in Ihrem vorhandenen Firebase-Projekt nicht aktiviert ist, können Sie Google Analytics auf dem Tab Integrationen unter  > Projekteinstellungen in der Firebase Console aktivieren.

    • Wenn Sie ein neues Firebase-Projekt erstellen, aktivieren Sie Google Analytics während des Projekterstellungsworkflows.

Schritt 1: Crashlytics SDK in Ihre App einfügen

Wenn Sie Ihr Unity-Projekt bei Ihrem Firebase-Projekt registriert haben, haben Sie möglicherweise bereits das Firebase Unity SDK heruntergeladen und die in den folgenden Schritten beschriebenen Pakete hinzugefügt.

  1. Lade das Firebase Unity SDK herunter und entpacke es an einem geeigneten Ort. Das Firebase Unity SDK ist nicht plattformspezifisch.

  2. Rufen Sie in Ihrem geöffneten Unity-Projekt Assets > Import Package > Custom Package auf.

  3. Wählen Sie im entpackten SDK aus, das Crashlytics SDK (FirebaseCrashlytics.unitypackage) zu importieren.

    Wenn Sie Brotkrummenprotokolle verwenden möchten, fügen Sie Ihrer App außerdem das Firebase SDK für Google Analytics (FirebaseAnalytics.unitypackage) hinzu. Achten Sie darauf, dass Google Analytics in Ihrem Firebase-Projekt aktiviert ist.

  4. Klicken Sie im Fenster Import Unity Package (Unity-Paket importieren) auf Import (Importieren).

Schritt 2: Crashlytics initialisieren

  1. Erstelle ein neues C#-Script und füge es einem GameObject in der Szene hinzu.

    1. Öffnen Sie die erste Szene und erstellen Sie dann eine leere GameObject mit dem Namen CrashlyticsInitializer.

    2. Klicken Sie im Inspection Panel (Inspection Panel) für das neue Objekt auf Add Component (Komponente hinzufügen).

    3. Wählen Sie das CrashlyticsInit-Script aus, um es dem CrashlyticsInitializer-Objekt hinzuzufügen.

  2. Initialisieren Sie Crashlytics in der Start-Methode des Scripts:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase and Crashlytics
    using Firebase;
    using Firebase.Crashlytics;
    
    public class CrashlyticsInit : MonoBehaviour {
        // Use this for initialization
        void Start () {
            // Initialize Firebase
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available)
                {
                    // Create and hold a reference to your FirebaseApp,
                    // where app is a Firebase.FirebaseApp property of your application class.
                    // Crashlytics will use the DefaultInstance, as well;
                    // this ensures that Crashlytics is initialized.
                    Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
    
                    // When this property is set to true, Crashlytics will report all
                    // uncaught exceptions as fatal events. This is the recommended behavior.
                    Crashlytics.ReportUncaughtExceptionsAsFatal = true;
    
                    // Set a flag here for indicating that your project is ready to use Firebase.
                }
                else
                {
                    UnityEngine.Debug.LogError(System.String.Format(
                      "Could not resolve all Firebase dependencies: {0}",dependencyStatus));
                    // Firebase Unity SDK is not safe to use here.
                }
            });
        }
    
      // Update is called once per frame
      void Update()
        // ...
    }

Schritt 3: (Nur Android) Symbole hochladen

Dieser Schritt ist nur für Android-Apps erforderlich, die IL2CPP verwenden.

  • Für Android-Apps, die das Mono-Scripting-Backend von Unity verwenden, sind diese Schritte nicht erforderlich.

  • Bei Apps für die Apple-Plattform sind diese Schritte nicht erforderlich, da das Firebase Unity-Editor-Plug-in Ihr Xcode-Projekt automatisch für den Upload von Symbolen konfiguriert.

Das Unity SDK 8.6.1 und höher von Crashlytics enthält automatisch NDK-Absturzberichte, sodass Crashlytics Unity-IL2CPP-Abstürze auf Android automatisch melden kann. Wenn Sie jedoch symbolische Stapelabzüge für Abstürze von nativen Bibliotheken im Crashlytics-Dashboard sehen möchten, müssen Sie Symbolinformationen zum Zeitpunkt des Builds mit der Firebase-Befehlszeile hochladen.

Folgen Sie der Anleitung zum Installieren der Firebase CLI, um Symbole hochzuladen.

Wenn Sie die Befehlszeile bereits installiert haben, aktualisieren Sie sie auf die neueste Version.

Schritt 4: Projekt erstellen und Symbole hochladen

iOS+ (Apple-Plattform)

  1. Exportieren Sie Ihr Projekt im Dialogfeld Build-Einstellungen in einen Xcode-Arbeitsbereich.

  2. Erstellen Sie Ihre App.

    Für Apple-Plattformen konfiguriert das Firebase Unity-Editor-Plug-in Ihr Xcode-Projekt automatisch so, dass für jeden Build eine Crashlytics-kompatible Symboldatei generiert und auf die Firebase-Server hochgeladen wird.

Android

  1. Führen Sie im Dialogfeld Build-Einstellungen einen der folgenden Schritte aus:

    • Exportieren Sie das Projekt in ein Android Studio-Projekt, um es zu erstellen.

    • Erstellen Sie Ihr APK direkt im Unity-Editor.
      Achten Sie vor dem Erstellen darauf, dass im Dialogfeld Build-Einstellungen das Kästchen für symbols.zip erstellen angeklickt ist.

  2. Nachdem der Build abgeschlossen ist, generieren Sie eine Crashlytics-kompatible Symboldatei und laden Sie sie mit dem folgenden Firebase-Befehl auf die Firebase-Server hoch:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: Ihre Firebase-Android-App-ID (nicht Ihr Paketname)
      Beispiel für eine Firebase-Android-App-ID: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS: Pfad zur Symboldatei, die von der Befehlszeile generiert wurde

      • In ein Android Studio-Projekt exportiert: PATH/TO/SYMBOLS ist das Verzeichnis unityLibrary/symbols, das im Stammverzeichnis des exportierten Projekts erstellt wird, nachdem Sie die App über Gradle oder Android Studio erstellt haben.

      • Sie haben das APK direkt in Unity erstellt. PATH/TO/SYMBOLS ist der Pfad der komprimierten Symboldatei, die im Stammverzeichnis des Projekts generiert wurde, als der Build abgeschlossen wurde (z. B. myproject/myapp-1.0-v100.symbols.zip).

    Erweiterte Optionen für die Verwendung des Firebase-Befehls zur Generierung und zum Hochladen von Symboldateien aufrufen

    Flag Beschreibung
    --generator=csym

    Der alte cSYM-Symboldateigenerator wird anstelle des standardmäßigen Breakpad-Generators verwendet.

    Nicht empfohlen. Wir empfehlen, den Standardgenerator für Breakpad-Symboldateien zu verwenden.

    --generator=breakpad

    Verwendet den Breakpad-Symboldateigenerator

    Standardmäßig wird Breakpad für die Symboldateigenerierung verwendet. Verwenden Sie dieses Flag nur, wenn Sie symbolGenerator { csym() } in Ihre Build-Konfiguration eingefügt haben und es überschreiben möchten, um stattdessen Breakpad zu verwenden.

    --dry-run

    Die Symboldateien werden generiert, aber nicht hochgeladen.

    Dieses Flag ist nützlich, wenn Sie den Inhalt der gesendeten Dateien prüfen möchten.

    --debug Bietet zusätzliche Informationen zur Fehlerbehebung

Schritt 5: Testabsturz erzwingen, um die Einrichtung abzuschließen

Wenn Sie die Einrichtung von Crashlytics abschließen und erste Daten im Crashlytics-Dashboard der Firebase-Konsole sehen möchten, müssen Sie einen Testabsturz erzwingen.

  1. Suchen Sie eine vorhandene GameObject und fügen Sie ihr das folgende Script hinzu. Dieses Script führt einige Sekunden nach dem Ausführen Ihrer App zu einem Testabsturz.

    using System;
    using UnityEngine;
    
    public class CrashlyticsTester : MonoBehaviour {
    
        int updatesBeforeException;
    
        // Use this for initialization
        void Start () {
          updatesBeforeException = 0;
        }
    
        // Update is called once per frame
        void Update()
        {
            // Call the exception-throwing method here so that it's run
            // every frame update
            throwExceptionEvery60Updates();
        }
    
        // A method that tests your Crashlytics implementation by throwing an
        // exception every 60 frame updates. You should see reports in the
        // Firebase console a few minutes after running your app with this method.
        void throwExceptionEvery60Updates()
        {
            if (updatesBeforeException > 0)
            {
                updatesBeforeException--;
            }
            else
            {
                // Set the counter to 60 updates
                updatesBeforeException = 60;
    
                // Throw an exception to test your Crashlytics implementation
                throw new System.Exception("test exception please ignore");
            }
        }
    }
  2. Erstellen Sie Ihre App und laden Sie die Symbolinformationen nach Abschluss des Builds hoch.

    • iOS und höher: Das Firebase Unity Editor-Plug-in konfiguriert Ihr Xcode-Projekt automatisch für den Upload Ihrer Symboldatei.

    • Android: Führen Sie für Ihre Android-Apps, die IL2CPP verwenden, den Befehl Firebase CLI crashlytics:symbols:upload aus, um die Symboldatei hochzuladen.

  3. Führen Sie die App aus. Beobachten Sie das Geräteprotokoll und warten Sie, bis die Ausnahme durch die CrashlyticsTester ausgelöst wird.

    • iOS und höher: Protokolle werden im unteren Bereich von Xcode angezeigt.

    • Android: Führen Sie den folgenden Befehl im Terminal aus, um Protokolle aufzurufen: adb logcat.

  4. Rufen Sie das Crashlytics-Dashboard der Firebase-Konsole auf, um den Absturz des Tests zu sehen.

    Wenn Sie die Konsole aktualisiert haben und der Test nach fünf Minuten immer noch nicht abgestürzt ist, aktivieren Sie die Debug-Protokollierung, um zu sehen, ob Ihre App Absturzberichte sendet.


Geschafft! Crashlytics überwacht jetzt Ihre App auf Abstürze. Im Crashlytics-Dashboard findest du alle deine Berichte und Statistiken.

Nächste Schritte

  • (Empfohlen) Wenn Sie Android-Apps verwenden, die IL2CPP verwenden, können Sie GWP-ASan-Berichte erfassen, um Abstürze zu beheben, die durch native Arbeitsspeicherfehler verursacht wurden. Diese speicherbezogenen Fehler können mit Speicherbeschädigungen in Ihrer App zusammenhängen, die die Hauptursache für Sicherheitslücken in Apps sind. Damit Sie diese Funktion zur Fehlerbehebung nutzen können, muss Ihre App das neueste Crashlytics SDK for Unity (Version 10.7.0 oder höher) verwenden und GWP-ASan explizit aktiviert haben. Dazu müssen Sie das Android-App-Manifest ändern.
  • Google Play einbinden, damit Sie die Absturzberichte Ihrer Android-App direkt im Crashlytics-Dashboard nach Google Play-Track filtern können So können Sie Ihr Dashboard besser auf bestimmte Builds ausrichten.