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 in der Firebase-Konsole umfassende Absturzberichte 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. Falls noch nicht geschehen, fügen Sie Firebase Ihrem Unity-Projekt hinzu. Wenn Sie kein Unity-Projekt haben, können Sie eine Beispiel-App herunterladen.

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

    • Wenn Google Analytics für Ihr vorhandenes 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 der Projekterstellung.

Schritt 1: Crashlytics SDK in Ihre App einfügen

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

  1. Laden Sie das Firebase Unity SDK herunter und entpacken Sie 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 Breadcrumb-Logs verwenden möchten, fügen Sie Ihrer App außerdem das Firebase SDK für Google Analytics hinzu (FirebaseAnalytics.unitypackage). 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. Erstellen Sie ein neues C#-Skript und fügen Sie es dann einem GameObject in der Szene hinzu.

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

    2. Klicken Sie im Inspector für das neue Objekt auf Komponente hinzufügen.

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

  2. Initialisieren Sie Crashlytics in der Methode Start des Skripts:

    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) Symbol-Upload einrichten

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

  • Für Android-Apps, in denen das Mono-Scripting-Backend von Unity verwendet wird, sind diese Schritte nicht erforderlich.

  • Für Apps für Apple-Plattformen sind diese Schritte nicht erforderlich, da das Firebase Unity Editor-Plug-in Ihr Xcode-Projekt automatisch für das Hochladen von Symbolen konfiguriert.

Das Unity SDK 8.6.1+ von Crashlytics enthält automatisch NDK-Absturzberichte, sodass Crashlytics Unity-Abstürze mit IL2CPP unter Android automatisch melden kann. Wenn Sie jedoch symbolisierte Stabeltraces für Abstürze nativer Bibliotheken im Crashlytics-Dashboard sehen möchten, müssen Sie Symbolinformationen zur Build-Zeit mit der Firebase-Befehlszeile hochladen.

Folgen Sie der Anleitung zum Installieren der Firebase CLI, um das Hochladen von Symbolen einzurichten.

Wenn Sie die CLI 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 Settings (Build-Einstellungen) in einen Xcode-Arbeitsbereich.

  2. Erstelle deine 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 Firebase-Server hochgeladen wird.

Android

  1. Führen Sie im Dialogfeld Build Settings 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 aktiviert ist.

  2. Nachdem der Build abgeschlossen ist, generieren Sie eine Crashlytics-kompatible Symboldatei und laden Sie sie auf die Firebase-Server hoch, indem Sie den folgenden Firebase-CLI-Befehl ausführen:

    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: Der Pfad zur Symboldatei, die von der CLI generiert wurde.

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

      • Die APK wurde direkt in Unity erstellt: PATH/TO/SYMBOLS ist der Pfad der gezippten Symboldatei, die nach Abschluss des Builds im Stammverzeichnis des Projekts generiert wurde (z. B. myproject/myapp-1.0-v100.symbols.zip).

    Erweiterte Optionen für die Verwendung des Firebase-CLI-Befehls zum Generieren und Hochladen von Symboldateien ansehen

    Flag Beschreibung
    --generator=csym

    Verwendet den alten cSYM-Symboldateigenerator anstelle des Standard-Breakpad-Generators.

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

    --generator=breakpad

    Verwendet den Breakpad-Symboldateigenerator

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

    --dry-run

    Generiert die Symboldateien, lädt sie aber nicht hoch

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

    --debug Zusätzliche Informationen zur Fehlerbehebung

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

Damit Sie die Einrichtung von Crashlytics abschließen und erste Daten im Crashlytics-Dashboard der Firebase Console sehen können, müssen Sie einen Testabsturz erzwingen.

  1. Suchen Sie eine vorhandene GameObject und fügen Sie ihr das folgende Skript hinzu. Dieses Skript 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 Symbolinformationen hoch, nachdem der Build abgeschlossen ist.

    • iOS+: Das Firebase Unity Editor-Plug-in konfiguriert Ihr Xcode-Projekt automatisch für das Hochladen 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 Ihre App aus. Beobachten Sie das Geräteprotokoll und warten Sie, bis die Ausnahme von CrashlyticsTester ausgelöst wird.

    • iOS+: Logs werden im unteren Bereich von Xcode angezeigt.

    • Android: Sie können sich die Logs ansehen, indem Sie den folgenden Befehl im Terminal ausführen: adb logcat.

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

    Wenn Sie die Konsole aktualisiert haben und der Testabsturz nach fünf Minuten immer noch nicht angezeigt wird, aktivieren Sie das Debug-Logging, um zu sehen, ob Ihre App Absturzberichte sendet.


Geschafft! Crashlytics überwacht jetzt Ihre App auf Abstürze. Im Crashlytics-Dashboard können Sie alle Ihre Berichte und Statistiken ansehen und analysieren.

Nächste Schritte

  • (Empfohlen) Bei Android-Apps, die IL2CPP verwenden, können Sie Abstürze, die durch native Arbeitsspeicherfehler verursacht werden, mithilfe von GWP-ASan-Berichten debuggen. Diese speicherbezogenen Fehler können mit Speicherschäden in Ihrer App zusammenhängen, die die Hauptursache für Sicherheitslücken in Apps sind. Damit Sie diese Debugging-Funktion nutzen können, muss Ihre App das aktuelle Crashlytics SDK für Unity (Version 10.7.0 oder höher) verwenden und GWP-ASan explizit aktiviert sein. Dazu müssen Sie Ihr Android-App-Manifest ändern.
  • Mit Google Play integrieren, 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.