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 uzyskać szczegółowe raporty o awariach w Firebase konsoli.

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

Zanim zaczniesz

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

  2. Zalecane: aby automatycznie otrzymywać dzienniki ścieżki i poznawać działania użytkowników prowadzące do awarii, błędów niekrytycznych lub zdarzeń 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ługi Google Analytics, możesz ją włączyć na stronie Ustawienia > Integracje w konsoli Firebase.

Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics

Pamiętaj, że gdy zarejestrujesz projekt Unity w projekcie w Firebase, możesz już mieć pobrany pakiet SDK Firebase Unity i dodane pakiety opisane w kolejnych krokach.

  1. Pobierz Firebase Unity SDK, a następnie rozpakuj go w wygodnym 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 (Własny pakiet).

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

    Aby korzystać z logów ścieżki, 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 obiekt GameObject o nazwie CrashlyticsInitializer.

    2. 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 na platformę 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 w panelu Crashlytics wyświetlać zsymbolizowane ślady stosu 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

zsymbolizowane ślady stosu.

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ć do projektu Android Studio, aby go skompilować;

    • Twórz pliki APK bezpośrednio w edytorze Unity.
      Zanim rozpoczniesz kompilację, upewnij się, że w oknie Ustawienia kompilacji zaznaczone jest 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 unityLibrary/symbols katalog, który jest tworzony w wyeksportowanym katalogu głównym projektu po skompilowaniu aplikacji za pomocą Gradle lub Android Studio.

      • Utworzono 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świetlanie opcji zaawansowanych dotyczących używania Firebase polecenia interfejsu wiersza poleceń do generowania i przesyłania pliku symboli

    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 do generowania pliku symboli używany jest Breakpad. Używaj tej flagi tylko wtedy, gdy w konfiguracji kompilacji dodano symbolGenerator { csym() } i chcesz zastąpić to ustawienie, aby używać Breakpada.

    --dry-run

    Generuje pliki symboli, ale ich nie przesyła.

    Ten znacznik przydaje się, jeśli chcesz sprawdzić zawartość wysyłanych plików.

    --debug Zawiera dodatkowe informacje na potrzeby debugowania

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

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

  1. Znajdź istniejący 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 prześlij informacje o symbolach po zakończeniu kompilacji.

    • 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 CLIcrashlytics:symbols:upload, aby przesłać plik symboli.

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

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

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

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

    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

  • (Zalecane) W przypadku aplikacji na Androida, które korzystają z IL2CPP, możesz uzyskać pomoc w debugowaniu awarii spowodowanych błędami pamięci natywnej, zbierając raporty GWP-ASan. Te błędy związane z pamięcią mogą być powiązane z uszkodzeniem zawartości pamięci w aplikacji, co jest główną przyczyną luk w zabezpieczeniach aplikacji. Aby korzystać z tej funkcji debugowania, upewnij się, że Twoja aplikacja używa najnowszego Crashlyticspakietu SDK do Unity (wersja 10.7.0 lub nowsza) i ma wyraźnie włączoną funkcję GWP-ASan (wymaga to zmodyfikowania pliku manifestu aplikacji na Androida).

  • Dostosuj konfigurację raportu o awarii, dodając raportowanie za zgodą użytkownika, dzienniki, klucze i śledzenie błędów niekrytycznych.

  • Eksportuj dane do BigQuery lub Cloud Logging, aby korzystać z zaawansowanych analiz i funkcji, takich jak wysyłanie zapytań dotyczących danych, tworzenie niestandardowych paneli i konfigurowanie niestandardowych alertów.