Wprowadzenie do Crashlytics w Unity

Wybierz platformę: iOS+ Android Android NDK Flutter Unity


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

Po skonfigurowaniu pakietu SDK Firebase Crashlytics w aplikacji możesz otrzymywać szczegółowe raporty o awariach w konsoli Firebase.

Konfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i w środowisku IDE (np. dodanie pliku konfiguracji Firebase i pakietu SDK Crashlytics). Aby dokończyć konfigurację, musisz wymusić testową awarię i wysłać pierwszy raport o awarii do Firebase.

Zanim zaczniesz

  1. Dodaj Firebase do projektu Unity, jeśli nie korzystasz w nim jeszcze z tej usługi. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.

  2. Zalecane: aby automatycznie otrzymywać logi działań użytkownika, które pomogą Ci zrozumieć działania użytkownika prowadzące do awarii, błędu niekrytycznego lub błędu ANR, musisz włączyć Google Analytics w projekcie w Firebase.

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

    • Jeśli używasz dotychczasowego projektu w Firebase bez włączonej usługi Google Analytics, możesz ją włączyć na stronie Ustawienia > Integracje w konsoli Firebase.

Krok 1. Dodaj pakiet SDK Crashlytics do aplikacji.

Pamiętaj, że podczas rejestrowania projektu Unity w projekcie w Firebase być może udało Ci się już pobrać pakiet SDK Firebase Unity i dodać 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 przeznaczony na konkretną platformę.

  2. W otwartym projekcie Unity kliknij Assets (Zasoby) > Import Package (Importuj pakiet) > Custom Package (Pakiet niestandardowy).

  3. Z rozpakowanego pakietu SDK wybierz importowanie pakietu SDK Crashlytics (FirebaseCrashlytics.unitypackage).

    Aby korzystać z logów działań użytkownika, dodaj też do aplikacji pakiet SDK Firebase dla Google Analytics (FirebaseAnalytics.unitypackage). Upewnij się, że w projekcie w Firebase jest włączona usługa Google Analytics.

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

Krok 2. Zainicjuj Crashlytics

  1. Utwórz nowy skrypt C#, a następnie dodaj go do elementu 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 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 używają IL2CPP.

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

  • W przypadku aplikacji na platformy Apple te kroki nie są konieczne, ponieważ wtyczka edytora Firebase Unity automatycznie konfiguruje projekt Xcode do przesyłania symboli.

Pakiet SDK Crashlytics dla Unity (w wersji 8.6.1 lub nowszej) automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne zgłaszanie awarii IL2CPP Unity na Androidzie. Aby jednak w panelu Crashlytics wyświetlać zrzuty stosu z symbolami dotyczące awarii biblioteki natywnej, musisz przesłać informacje o symbolach podczas kompilacji za pomocą interfejsu wiersza poleceń Firebase.

Aby skonfigurować przesyłanie symboli, postępuj zgodnie z instrukcjami instalacji interfejsu wiersza poleceń Firebase.

Jeśli masz już zainstalowany interfejs wiersza poleceń, 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. Utwórz aplikację.

    W przypadku platform Apple wtyczka edytora Firebase Unity automatycznie konfiguruje projekt Xcode, aby generować i przesyłać plik symboli zgodny z Crashlytics na serwery Firebase dla każdej kompilacji.

Android

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

    • wyeksportować do projektu Android Studio, aby go utworzyć;

    • Utwórz plik APK bezpośrednio w edytorze Unity.
      Przed kompilacją upewnij się, że w oknie Ustawienia kompilacji jest zaznaczone pole wyboru 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 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ładowy identyfikator 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 głównym katalogu wyeksportowanego projektu po utworzeniu aplikacji za pomocą Gradle lub Android Studio.

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

    Wyświetlanie opcji zaawansowanych dotyczących używania polecenia interfejsu wiersza poleceń Firebase do generowania plików symboli i ich przesyłania

    Flaga Opis
    --generator=csym

    Używa starszego generatora plików symboli cSYM zamiast domyślnego generatora Breakpad

    Nie zalecamy korzystania z tej opcji. Zalecamy użycie domyślnego generatora plików symboli Breakpad.

    --generator=breakpad

    używa generatora plików symboli Breakpad,

    Pamiętaj, że domyślnie generowanie plików symboli odbywa się w formacie Breakpad. Używaj tej flagi tylko wtedy, gdy w konfiguracji kompilacji dodano symbolGenerator { csym() } i chcesz zastąpić tę opcję, aby używać Breakpad.

    --dry-run

    Generuje pliki symboli, ale ich nie przesyła.

    Ten znacznik jest przydatny, jeśli chcesz sprawdzić zawartość wysyłanych plików.

    --debug zawiera dodatkowe informacje na potrzeby debugowania;

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

Aby dokończyć konfigurowanie usługi Crashlytics i zobaczyć początkowe dane w panelu Crashlytics w konsoli Firebase, musisz wymusić testową awarię.

  1. Znajdź istniejący element GameObject, a następnie dodaj do niego ten skrypt. Ten skrypt spowoduje testową awarię 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 edytora Firebase Unity automatycznie konfiguruje projekt Xcode, aby przesłać plik symboli.

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

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

    • iOS+: dzienniki możesz wyświetlić w dolnym panelu Xcode.

    • Android: wyświetl logi, uruchamiając w terminalu to polecenie: adb logcat.

  4. W konsoli Firebase otwórz panel DevOps i zaangażowanie > Crashlytics, aby sprawdzić, czy jest tam raport o awarii testowej.

    Jeśli po odświeżeniu konsoli i odczekaniu 5 minut nadal nie widzisz testowej awarii, włącz dziennik 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 przeanalizować wszystkie raporty i statystyki.

Dalsze kroki