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 Firebase Crashlyticspakietu SDK w aplikacjiFirebase możesz uzyskać w konsoli szczegółowe raporty o awariach.

Konfiguracja Crashlytics wymaga wykonania zadań zarówno w Firebase konsoli, jak i w IDE (np. dodania pliku konfiguracyjnego Firebase i pakietu SDK Crashlytics). Aby dokończyć konfigurację, musisz wymusić testowe awarie, aby wysłać do Firebase pierwszy raport o awarii.

Zanim zaczniesz

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

  2. Zalecane: aby automatycznie otrzymywać dzienniki ścieżki i lepiej poznawać działania użytkowników, które doprowadziły do awarii, błędu niekrytycznego lub zdarzenia ANR, musisz włączyć Google Analytics w projekcie 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ługiGoogle Analytics, możesz ją włączyć na stronie Ustawienia > Integracje w konsoli Firebase.

Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics

Pamiętaj, że podczas rejestrowania projektu Unity w projekcie Firebase mogłeś(-aś) już pobrać pakiet SDK Firebase Unity i dodać pakiety opisane w kolejnych krokach.

  1. Pobierz Firebase Unity SDK, a następnie rozpakuj go w dogodnym miejscu. Pakiet SDK Firebase Unity nie jest przeznaczony dla konkretnej platformy.

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

  3. Z rozpakowanego pakietu SDK wybierz opcję importowania Crashlytics SDK (FirebaseCrashlytics.unitypackage).

    Aby korzystać z logów działań użytkownika, dodaj do aplikacji [pakiet] SDK Firebase dla Google Analytics (FirebaseAnalytics.unitypackage). Upewnij się, że w projekcie w Firebase włączona jest 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 w języku C#, a następnie dodaj go do obiektu GameObject w scenie.

    1. Otwórz pierwszą scenę, a następnie utwórz pusty element 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) Przygotuj się do przesyłania 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 platformy skryptowej Mono w Unity, te czynności nie są potrzebne.

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

Pakiet Crashlytics SDK do Unity (wersja 8.6.1 lub nowsza) automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne raportowanie awarii Unity IL2CPP na Androidzie. Aby jednak wyświetlać 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 przygotować się do przesyłania symboli, postępuj zgodnie z instrukcjami instalacji interfejsu wiersza poleceń Firebase.

Jeśli interfejs CLI jest już zainstalowany, zaktualizuj go do najnowszej wersji.

Krok 4. Utwórz projekt i prześlij symbole

iOS+ (platforma Apple)

  1. W oknie Ustawienia kompilacji wyeksportuj projekt do obszaru roboczego Xcode.

  2. Stwórz aplikację.

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

Android

  1. W oknie Ustawienia kompilacji wykonaj jedną z tych czynności:

    • wyeksportować projekt do Android Studio, aby go skompilować;

    • Twórz pliki APK bezpośrednio w edytorze Unity.
      Przed utworzeniem 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ń.

      • Wyeksportowany 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.

      • Plik APK został utworzony 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świetlanie opcji zaawansowanych 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 funkcji. Zalecamy użycie domyślnego generatora plików symboli Breakpad.

    --generator=breakpad

    Korzysta z generatora plików symboli Breakpad

    Pamiętaj, że domyślnie pliki symboli są generowane w formacie Breakpad. Używaj tej flagi tylko wtedy, gdy w konfiguracji kompilacji dodano symbolGenerator { csym() } i chcesz zastąpić ją, aby używać Breakpada.

    --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ś awarię testu, aby zakończyć konfigurację

Aby dokończyć konfigurowanie Crashlytics i wyświetlić wstępne dane w panelu Crashlytics w konsoli Firebase, musisz wymusić testowe awarie.

  1. Znajdź istniejący tag 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, aby przesyłać plik symboli.

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

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

    • iOS: wyświetl dzienniki w dolnym panelu Xcode.

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

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

    Jeśli po odświeżeniu konsoli nadal nie widzisz testowego błędu po 5 minutach, włącz rejestrowanie debugowania, aby sprawdzić, czy aplikacja wysyła raporty o błędach.


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

Dalsze kroki