Pierwsze kroki z Firebase Crashlytics

Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Firebase Crashlytics w swojej aplikacji za pomocą pakietu SDK Firebase Crashlytics, aby otrzymywać kompleksowe raporty o awariach w konsoli Firebase.

Aby skonfigurować Crashlytics, musisz wykonać zadania zarówno w konsoli Firebase, jak i w IDE (np. dodanie pliku konfiguracji Firebase i pakietu SDK Crashlytics). Aby dokończyć konfigurację, musisz wymusić awarię testową, aby wysłać pierwszy raport o tej awarii do Firebase.

Zanim zaczniesz

  1. Dodaj Firebase do swojego projektu Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.

  2. Zalecane: aby automatycznie pobierać dzienniki menu nawigacyjnego, które pozwalają analizować działania użytkowników, które prowadzą do awarii, błędów niekrytycznych lub błędów ANR, musisz włączyć Google Analytics w swoim projekcie Firebase.

    • Jeśli w istniejącym projekcie Firebase nie masz włączonej usługi Google Analytics, możesz włączyć Google Analytics na karcie Integracje w konsoli Firebase na stronie > Ustawienia projektu.

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

Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics

Pamiętaj, że podczas rejestrowania projektu Unity w projekcie Firebase mogło już być, ż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 przeznaczony tylko dla konkretnej platformy.

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

  3. W rozpakowanym pakiecie SDK wybierz pakiet SDK Crashlytics (FirebaseCrashlytics.unitypackage), który chcesz zaimportować.

    Aby korzystać z dzienników menu nawigacyjnego, dodaj też do swojej aplikacji (FirebaseAnalytics.unitypackage) pakiet SDK Firebase dla Google Analytics. Upewnij się, że w projekcie Firebase włączono Google Analytics.

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

Krok 2. Zainicjuj Crashlytics

  1. Utwórz nowy skrypt C#, a potem dodaj go do elementu GameObject w scenie.

    1. Otwórz pierwszą scenę, a potem utwórz pusty element GameObject o nazwie CrashlyticsInitializer.

    2. Kliknij Dodaj komponent w inspektorze nowego obiektu.

    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.

  • Nie musisz wykonywać tych czynności w przypadku aplikacji na Androida, które korzystają z backendu skryptów Mono Unity.

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

Pakiet Unity SDK 8.6.1 lub nowszy na stronie Crashlytics zapewnia raporty o awariach NDK, dzięki którym Crashlytics może automatycznie zgłaszać awarie na Androidzie w Unity IL2CPP. Jeśli jednak chcesz zobaczyć w panelu Crashlytics zsymbolizowane dane śledzenia stosu awarii biblioteki natywnej, musisz przesłać informacje o symbolach podczas kompilacji za pomocą interfejsu wiersza poleceń Firebase.

Aby skonfigurować przesyłanie symboli, wykonaj instrukcje instalowania interfejsu wiersza poleceń Firebase.

Jeśli masz już zainstalowany interfejs wiersza poleceń, zaktualizuj go do najnowszej wersji.

Krok 4. Zbuduj projekt i prześlij symbole

iOS+ (platforma Apple)

  1. Z okna Ustawienia kompilacji wyeksportuj projekt do obszaru roboczego Xcode.

  2. Utwórz aplikację.

    W przypadku platform Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode w celu wygenerowania i przesłania pliku symboli zgodnego z Crashlytics na serwery Firebase dla każdej kompilacji.

Urządzenie z Androidem

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

    • Wyeksportuj swój projekt do projektu Android Studio, aby go utworzyć.

    • Utwórz pakiet APK bezpośrednio z edytora Unity.
      Zanim zaczniesz tworzyć pliki, sprawdź, czy w oknie Ustawienia kompilacji zaznaczone jest pole wyboru Utwórz symbol.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ładowy identyfikator 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 utworzeniu aplikacji w Gradle lub Android Studio.

      • Utwórz pakiet 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 zaawansowane opcje korzystania z polecenia interfejsu wiersza poleceń Firebase do generowania i przesyłania plików symboli

    Zgłoś Opis
    --generator=csym

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

    Niezalecane. Zalecamy użycie domyślnego generatora plików symboli Breakpad.

    --generator=breakpad

    Używa generatora plików symboli Breakpad

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

    --dry-run

    generuje pliki symboli, ale ich nie przesyła;

    Ta flaga jest przydatna, gdy chcesz sprawdzić zawartość wysyłanych plików.

    --debug Zawiera dodatkowe informacje na potrzeby debugowania

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

Aby dokończyć konfigurowanie Crashlytics i wyświetlić dane początkowe w panelu Crashlytics w konsoli Firebase, musisz wymusić awarię testową.

  1. Znajdź element 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. Po zakończeniu kompilacji skompiluj aplikację i prześlij informacje o symbolach.

    • iOS+: wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode w celu przesłania pliku symboli.

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

  3. Uruchom aplikację. Gdy aplikacja będzie już działać, obserwuj dziennik urządzenia i poczekaj na aktywowanie wyjątku z poziomu CrashlyticsTester.

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

    • Android: wyświetl logi, 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 Twoja 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

  • (Zalecane) W przypadku aplikacji na Androida, które korzystają z IL2CPP, uzyskaj pomoc w debugowaniu awarii spowodowanych przez błędy pamięci natywnej dzięki zbieraniu raportów GWP-ASan. Te błędy związane z pamięcią mogą być związane z uszkodzeniem pamięci w aplikacji, co jest główną przyczyną luk w zabezpieczeniach aplikacji. Aby móc skorzystać z tej funkcji debugowania, sprawdź, czy Twoja aplikacja korzysta z najnowszego pakietu SDK Crashlytics na Unity (w wersji 10.7.0 lub nowszej) i ma jawnie włączoną funkcję GWP-ASan (wymaga to zmodyfikowania pliku manifestu aplikacji na Androida).
  • Integracja z Google Play pozwala filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w panelu Crashlytics. Dzięki temu możesz skoncentrować się w panelu na konkretnych kompilacjach.