Wprowadzenie do Crashlytics w Unity

Wybierz platformę: iOS+ Android Android NDK Flutter Unity


Z tego przewodnika dowiesz się, jak rozpocząć korzystanie z Firebase Crashlytics w projekcie Unity.

Po skonfigurowaniu pakietu SDK Firebase Crashlytics w aplikacji możesz otrzymywać obszerne raporty o awariach w konsoli Firebase.

Konfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i w IDE (np. dodania pliku konfiguracyjnego Firebase i pakietu SDK Crashlytics ). Aby zakończyć konfigurację, musisz wymusić awarię testową, aby wysłać pierwszy raport o awariach do Firebase.

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobisz, dodaj Firebase do projektu Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.

  2. Zalecane: aby automatycznie otrzymywać dzienniki ścieżek które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, błędów niekrytycznych lub zdarzeń ANR, musisz włączyć Google Analytics w projekcie w Firebase.

    • Jeśli w dotychczasowym projekcie w Firebase nie jest włączona usługa Google Analytics, możesz ją włączyć na karcie Integracje w sekcji Ustawienia > Ustawienia projektu w konsoli Firebase.Google Analytics

    • Jeśli tworzysz nowy projekt w Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.

Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics

Pamiętaj, że gdy zarejestrowałeś(-aś) projekt Unity w projekcie w Firebase, być może masz już pobrany pakiet SDK Firebase Unity i dodane pakiety opisane w kolejnych krokach.

  1. Pobierz pakiet SDK Firebase Unity, a następnie rozpakuj go w dogodnym miejscu. Pakiet SDK Firebase Unity nie jest specyficzny dla żadnej platformy.

  2. W otwartym projekcie Unity przejdź do Assets > Import Package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet).

  3. W rozpakowanym pakiecie SDK wybierz do zaimportowania pakiet SDK Crashlytics (FirebaseCrashlytics.unitypackage).

    Aby korzystać z dzienników ścieżek dodaj też do aplikacji [pakiet] SDK Firebase dla Google Analytics (FirebaseAnalytics.unitypackage). Upewnij się, że usługa Google Analytics jest włączona w projekcie w Firebase.

  4. W oknie Import Unity Package (Importowanie pakietu dla Unity) kliknij Import (Importuj).

Krok 2. Zainicjuj Crashlytics

  1. Utwórz nowy skrypt w języku C#, a następnie dodaj go do GameObject w scenie.

    1. Otwórz pierwszą scenę, a następnie utwórz pusty obiekt GameObject o nazwie CrashlyticsInitializer.

    2. W inspektorze nowego obiektu kliknij Add Component (Dodaj komponent).

    3. Wybierz skrypt CrashlyticsInit, aby dodać go do obiektu CrashlyticsInitializer.

  2. Zainicjuj Crashlytics w metodzie Start skryptu:

    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()
        // ...
    }

Krok 3.: (Tylko Android) Skonfiguruj przesyłanie symboli

Ten krok jest wymagany tylko w przypadku aplikacji na Androida, które korzystają z IL2CPP.

  • W przypadku aplikacji na Androida, które korzystają z backendu skryptów Mono w Unity, te czynności nie są potrzebne.

  • W przypadku aplikacji na platformy Apple te czynności nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania symboli.

Pakiet SDK Unity 8.6.1+ Crashlytics automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne raportowanie awarii Unity IL2CPP na Androidzie. Aby jednak widzieć w panelu Crashlytics zrzuty stosu z symbolami w przypadku awarii biblioteki natywnej, musisz przesłać informacje o symbolach w czasie kompilacji za pomocą interfejsu wiersza poleceń Firebase.

Aby skonfigurować przesyłanie symboli, postępuj zgodnie z instrukcjami, aby zainstalować Firebase interfejs wiersza poleceń.

Jeśli wiersz poleceń został już zainstalowany, zaktualizuj go do najnowszej wersji.

Krok 4. Skompiluj projekt i prześlij symbole

iOS+ (platforma Apple)

  1. W oknie Build Settings (Ustawienia kompilacji) wyeksportuj projekt do obszaru roboczego Xcode.

  2. Skompiluj aplikację.

    W przypadku platform Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode tak, aby generować i przesyłać do serwerów Firebase plik symboli zgodny z Crashlytics-compatible dla każdej kompilacji.

Android

  1. W oknie Build Settings (Ustawienia kompilacji) wykonaj jedną z tych czynności:

    • wyeksportuj projekt do projektu Android Studio, aby go skompilować;

    • skompiluj plik APK bezpośrednio w edytorze Unity.
      Przed kompilacją upewnij się, że w oknie Build Settings (Ustawienia kompilacji) jest zaznaczone pole wyboru Create symbols.zip (Utwórz plik symbols.zip).

  2. Po zakończeniu kompilacji wygeneruj plik symboli zgodny z Crashlytics i prześlij go na serwery Firebase, uruchamiając to polecenie interfejsu wiersza poleceń Firebase:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: identyfikator aplikacji Firebase na Androida (nie nazwa pakietu)
      Przykład identyfikatora aplikacji Firebase na Androida: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS: ścieżka do pliku symboli wygenerowanego przez interfejs wiersza poleceń

      • Wyeksportowano do projektu Android Studio – PATH/TO/SYMBOLS to katalog unityLibrary/symbols, który jest tworzony w wyeksportowanym katalogu głównym projektu po skompilowaniu aplikacji za pomocą Gradle lub Android Studio.

      • Skompilowano plik APK bezpośrednio w Unity – PATH/TO/SYMBOLS to ścieżka do spakowanego pliku symboli wygenerowanego w katalogu głównym projektu po zakończeniu kompilacji (np.: myproject/myapp-1.0-v100.symbols.zip).

    Wyświetl opcje zaawansowane dotyczące używania Firebase polecenia interfejsu wiersza poleceń do generowania i przesyłania pliku symboli

    Flaga Opis
    --generator=csym

    Zamiast domyślnego generatora Breakpad używa starszego generatora pliku symboli cSYM.

    Nie zalecamy używania. Zalecamy używanie domyślnego Breakpad symbol file generator.

    --generator=breakpad

    Używa generatora pliku symboli Breakpad.

    Pamiętaj, że domyślnym generatorem pliku symboli jest Breakpad. Używaj tej flagi tylko wtedy, gdy dodasz symbolGenerator { csym() } w konfiguracji kompilacji i chcesz ją zastąpić, aby używać Breakpad.

    --dry-run

    Generuje pliki symboli, ale ich nie przesyła.

    Ta flaga jest przydatna, jeśli chcesz sprawdzić zawartość plików, które są wysyłane.

    --debug Podaje dodatkowe informacje na potrzeby debugowania.

Krok 5. Wymuś awarię testową, aby zakończyć konfigurację

Aby zakończyć konfigurowanie Crashlytics i zobaczyć wstępne dane w Crashlytics panelu Firebase konsoli, musisz wymusić awarię testową.

  1. Znajdź istniejący obiekt GameObject, a następnie dodaj do niego ten skrypt. Ten skrypt spowoduje awarię testową kilka sekund po uruchomieniu aplikacji.

    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. Skompiluj aplikację i po zakończeniu kompilacji prześlij informacje o symbolach.

    • iOS+: wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania pliku symboli.

    • Android: w przypadku aplikacji na Androida, które korzystają z IL2CPP, uruchom polecenie wiersza poleceń Firebase CLI crashlytics:symbols:upload, aby przesłać plik symboli.

  3. Uruchom aplikację. Gdy aplikacja będzie działać, obserwuj dziennik urządzenia i poczekaj, aż wyjątek zostanie wywołany przez CrashlyticsTester.

    • iOS+: dzienniki znajdziesz w dolnym okienku Xcode.

    • Android: dzienniki znajdziesz, uruchamiając w terminalu to polecenie: adb logcat.

  4. Otwórz panel Crashlytics w konsoli Firebase, aby zobaczyć awarię testową.

    Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po 5 minutach, włącz rejestrowanie debugowania aby sprawdzić, czy aplikacja wysyła raporty o awariach.


To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Otwórz panel Crashlytics, aby wyświetlić i zbadać wszystkie raporty i statystyki.

Dalsze kroki