| 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
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.
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.
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.
Rufen Sie in Ihrem geöffneten Unity-Projekt Assets > Import Package > Custom Package (Assets > Paket importieren > Benutzerdefiniertes Paket) auf.
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.Klicken Sie im Fenster Import Unity Package (Unity-Paket importieren) auf Import (Importieren).
Schritt 2: Crashlytics initialisieren
Erstellen Sie ein neues C#-Skript und fügen Sie es einem
GameObjectin der Szene hinzu.Öffnen Sie Ihre erste Szene und erstellen Sie ein leeres
GameObjectmit dem NamenCrashlyticsInitializer.Klicken Sie im Inspector für das neue Objekt auf Add Component (Komponente hinzufügen).
Wählen Sie das
CrashlyticsInit-Script aus, um es demCrashlyticsInitializer-Objekt hinzuzufügen.
Initialisieren Sie Crashlytics in der Methode
Startdes 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)
Exportieren Sie Ihr Projekt im Dialogfeld Build Settings (Build-Einstellungen) in einen Xcode-Arbeitsbereich.
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
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.
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:17104a2ced0c9b9bPATH/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=csymVerwendet den alten cSYM-Symboldateigenerator anstelle des standardmäßigen Breakpad-Generators
Nicht empfohlen. Wir empfehlen, den standardmäßigen Breakpad-Symboldateigenerator zu verwenden.
--generator=breakpadVerwendet den Breakpad-Symboldateigenerator
Die Standardeinstellung für die Generierung von Symboldateien ist Breakpad. Verwenden Sie dieses Flag nur, wenn Sie
in Ihrer Build-Konfiguration hinzugefügt haben und es überschreiben möchten, um stattdessen Breakpad zu verwenden.symbolGenerator { csym() }--dry-runGeneriert die Symboldateien, lädt sie aber nicht hoch
Dieses Flag ist nützlich, wenn Sie den Inhalt der gesendeten Dateien prüfen möchten.
--debugStellt 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.
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"); } } }
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:uploadaus, um Ihre Symboldatei hochzuladen.
Führen Sie Ihre App aus. Sobald die App ausgeführt wird, beobachten Sie das Geräteprotokoll und warten Sie, bis die Ausnahme von
CrashlyticsTesterausgelö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.
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.