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.

Konfiguracja 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. 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ć dzienniki ścieżki nawigacyjnej, które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, błędu niekrytycznego lub zdarzenia 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 konsoli Firebase.

Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics

Pamiętaj, że gdy zarejestrowałeś(-aś) projekt Unity w projekcie 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 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 logów ścieżki 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 Crashlytics dla Unity (w wersji 8.6.1 lub nowszej) automatycznie obejmuje 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+: logi znajdziesz w dolnym okienku Xcode.

    • Android: logi możesz wyświetlić, uruchamiając w terminalu to polecenie: adb logcat.

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

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


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

Dalsze kroki