Erste Schritte mit Crashlytics für Unity

Plattform auswählen: iOS+ Android Android NDK Flutter Unity


In diesem Leitfaden wird beschrieben, wie Sie mit Firebase Crashlytics in Ihrem Unity-Projekt beginnen.

Nachdem Sie das Firebase Crashlytics SDK in Ihrer App eingerichtet haben, können Sie in der Firebase Console umfassende Absturzberichte abrufen.

Für die Einrichtung von Crashlytics sind Aufgaben sowohl in der Firebase Console 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 der erste Absturzbericht an Firebase gesendet wird.

Hinweis

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

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

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

    • Wenn Sie ein vorhandenes Firebase-Projekt verwenden, für das Google Analytics nicht aktiviert ist, können Sie es in der Firebase Console auf der Seite Einstellungen > Integrationen aktivieren.

Schritt 1: Crashlytics SDK zu Ihrer App hinzufügen

Wenn Sie Ihr Unity-Projekt in 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. Laden Sie das Firebase Unity SDK herunter und entpacken Sie es an einem für Sie günstigen Ort. Das Firebase Unity SDK ist nicht plattformspezifisch.

  2. Rufen Sie in Ihrem geöffneten Unity-Projekt Assets > Import Package > Custom Package (Assets > Paket importieren > Benutzerdefiniertes Paket) auf.

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

    Wenn Sie Navigationspfad-Logs nutzen möchten, fügen Sie Ihrer App auch 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 einem GameObject in der Szene hinzu.

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

    2. Klicken Sie im Inspector 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 Methode Start 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) Symbol-Upload einrichten

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 Apple-Plattformen sind diese Schritte nicht erforderlich, da das Firebase Unity Editor-Plug-in Ihr Xcode-Projekt automatisch so konfiguriert, dass Symbole hochgeladen werden.

Das Crashlytics SDK für Unity (v8.6.1+) enthält automatisch NDK-Absturzberichte, sodass Crashlytics Unity-IL2CPP-Abstürze unter Android automatisch melden kann. Wenn Sie jedoch symbolisierte Stacktraces für Abstürze nativer Bibliotheken im Crashlytics-Dashboard sehen möchten, müssen Sie während des Builds Symbolinformationen mit der Firebase-Befehlszeile hochladen.

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

Wenn Sie die Befehlszeile bereits installiert haben, aktualisieren Sie sie auf die aktuelle 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. App erstellen

    Bei 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-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 Settings (Build-Einstellungen) das Kästchen Create symbols.zip (symbols.zip erstellen) angeklickt ist.

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

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

    • PATH/TO/SYMBOLS: Der 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 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 standardmäßigen Breakpad-Generators

    Nicht empfohlen. Wir empfehlen, den standardmäßigen Breakpad-Symboldateigenerator zu verwenden.

    --generator=breakpad

    Verwendet den Breakpad-Symboldateigenerator

    Die Standardeinstellung für die Generierung von Symboldateien ist Breakpad. 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 Stellt zusätzliche Debugging-Informationen bereit

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 Console sehen möchten, müssen Sie einen Testabsturz erzwingen.

  1. Suchen Sie eine vorhandene GameObject-Datei und fügen Sie das folgende Script hinzu. Dieses Script verursacht einige Sekunden nach dem Ausführen der App einen 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 hoch, nachdem der Build abgeschlossen ist.

    • iOS+: Das Firebase Unity Editor-Plug-in konfiguriert Ihr Xcode-Projekt automatisch so, dass Ihre Symboldatei hochgeladen wird.

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

  3. Führen Sie Ihre App aus. Sobald die App ausgeführt wird, beobachten Sie das Geräteprotokoll und warten Sie, bis die Ausnahme von CrashlyticsTester ausgelöst wird.

    • iOS+: Logs im unteren Bereich von Xcode ansehen.

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

  4. Rufen Sie in der Firebase-Konsole das Dashboard DevOps & Engagement > Crashlytics auf, um nach dem Testabsturzbericht zu suchen.

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


Geschafft! Crashlytics überwacht Ihre App jetzt auf Abstürze. Rufen Sie das Crashlytics-Dashboard auf, um alle Berichte und Statistiken anzusehen und zu untersuchen.

Nächste Schritte

  • (Empfohlen) Bei Android-Apps, die IL2CPP verwenden, kannst du dir beim Debuggen von Abstürzen, die durch native Arbeitsspeicherfehler verursacht werden, helfen lassen, indem du GWP-ASan-Berichte erfassen lässt. Diese speicherbezogenen Fehler können mit Speicherschäden in deiner App zusammenhängen, die die Hauptursache für Sicherheitslücken in Apps sind. Damit Sie diese Debugging-Funktion nutzen können, muss Ihre App die neueste Version des Crashlytics SDK für Unity (v10.7.0+) verwenden und GWP-ASan muss explizit aktiviert sein. Dazu müssen Sie Ihr Android-App-Manifest ändern.

  • Passen Sie die Einrichtung von Absturzberichten an, indem Sie Berichte mit Einwilligung, Logs, Schlüssel und das Tracking von nicht schwerwiegenden Fehlern hinzufügen.

  • Daten nach BigQuery oder Cloud Logging exportieren, um erweiterte Analysen und Funktionen zu nutzen, z. B. Daten abfragen, benutzerdefinierte Dashboards erstellen und benutzerdefinierte Benachrichtigungen einrichten.