Zacznij korzystać z Firebase Crashlytics

W tym przewodniku Szybki start opisano, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą pakietu SDK Firebase Crashlytics, aby móc uzyskiwać kompleksowe raporty o awariach w konsoli Firebase.

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

Zanim zaczniesz

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

  2. Zalecane : aby automatycznie pobierać dzienniki nawigacyjne umożliwiające zrozumienie działań użytkownika prowadzących do awarii, zdarzenia niekrytycznego lub zdarzenia ANR, musisz włączyć Google Analytics w swoim projekcie Firebase.

    • Jeśli Twój istniejący projekt Firebase nie ma włączonej usługi Google Analytics, możesz ją włączyć na karcie Integracje w swoim > Ustawienia projektu w konsoli Firebase.

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

Krok 1 : Dodaj pakiet SDK Crashlytics do swojej aplikacji

Pamiętaj, że kiedy zarejestrowałeś projekt Unity w projekcie Firebase, być może pobrałeś już pakiet SDK Firebase Unity i dodałeś pakiety opisane w poniższych krokach.

  1. Pobierz pakiet SDK Firebase Unity , a następnie rozpakuj go w dogodnym miejscu. Zestaw SDK Firebase Unity nie jest specyficzny dla platformy.

  2. W otwartym projekcie Unity przejdź do opcji Zasoby > Importuj pakiet > Pakiet niestandardowy .

  3. Z rozpakowanego zestawu SDK wybierz opcję zaimportowania zestawu SDK Crashlytics ( FirebaseCrashlytics.unitypackage ).

    Aby skorzystać z dzienników nawigacyjnych , dodaj także do swojej aplikacji pakiet Firebase SDK dla Google Analytics ( FirebaseAnalytics.unitypackage ). Upewnij się, że w Twoim projekcie Firebase jest włączona usługa Google Analytics .

  4. W oknie Importuj pakiet Unity kliknij opcję Importuj .

Krok 2 : Zainicjuj Crashlytics

  1. Utwórz nowy skrypt C#, a następnie dodaj go do obiektu GameObject w scenie.

    1. Otwórz swoją pierwszą scenę, a następnie utwórz pusty GameObject o nazwie CrashlyticsInitializer .

    2. Kliknij opcję 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) Przygotuj się do przesyłania symboli

Ten krok jest wymagany tylko w przypadku aplikacji na Androida korzystających z protokołu IL2CPP.

  • W przypadku aplikacji dla systemu Android korzystających z zaplecza skryptów Mono aparatu Unity te kroki nie są potrzebne.

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

Pakiet Unity SDK 8.6.1+ firmy Crashlytics automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne raportowanie awarii Unity IL2CPP na Androidzie. Aby jednak zobaczyć symboliczne ślady stosu dla awarii bibliotek natywnych w panelu kontrolnym Crashlytics, musisz przesłać informacje o symbolach w czasie kompilacji za pomocą interfejsu wiersza polecenia Firebase.

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

Jeśli masz już zainstalowany interfejs CLI, pamiętaj o zaktualizowaniu go do najnowszej wersji .

Krok 4 : Zbuduj swój projekt i prześlij symbole

iOS+ (platforma Apple)

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

  2. Zbuduj swoją 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.

Android

  1. W oknie dialogowym Ustawienia kompilacji wykonaj jedną z następujących czynności:

    • Eksportuj do projektu Android Studio, aby zbudować swój projekt; Lub

    • Zbuduj swój plik APK bezpośrednio z edytora Unity.
      Przed budowaniem upewnij się, że pole wyboru Utwórz plik symboli.zip jest zaznaczone w oknie dialogowym Ustawienia budowania .

  2. Po zakończeniu kompilacji wygeneruj plik symboli zgodny z Crashlytics i prześlij go na serwery Firebase, uruchamiając następujące polecenie Firebase CLI:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : Twój 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 CLI

      • Wyeksportowany do projektu Android Studio — PATH/TO/SYMBOLS to katalog unityLibrary/symbols , który jest tworzony w katalogu głównym wyeksportowanego projektu po zbudowaniu aplikacji za pomocą Gradle lub Android Studio.

      • Zbudowano plik APK bezpośrednio z poziomu Unity — PATH/TO/SYMBOLS to ścieżka spakowanego pliku symboli wygenerowanego w katalogu głównym projektu po zakończeniu kompilacji (na przykład: myproject/myapp-1.0-v100.symbols.zip ).

    Zobacz zaawansowane opcje używania polecenia Firebase CLI do generowania i przesyłania plików symboli

    Flaga Opis
    --generator=csym

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

    Nie zaleca się stosowania. Zalecamy użycie domyślnego generatora plików symboli Breakpad.

    --generator=breakpad

    Używa generatora plików symboli Breakpad

    Należy pamiętać, że domyślnym ustawieniem generowania pliku symboli jest Breakpad. Używaj tej flagi tylko wtedy, gdy ją dodałeś symbolGenerator { csym() } w konfiguracji kompilacji i chcesz go zastąpić, aby zamiast tego używać Breakpad.

    --dry-run

    Generuje pliki symboli, ale ich nie przesyła

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

    --debug Zawiera dodatkowe informacje dotyczące debugowania

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

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

  1. Znajdź istniejący GameObject , a następnie dodaj do niego następujący 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. Zbuduj aplikację i prześlij informacje o symbolach po zakończeniu kompilacji.

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

    • Android : W przypadku aplikacji na Androida korzystających z protokołu IL2CPP uruchom polecenie crashlytics:symbols:upload Firebase CLI, aby przesłać plik symboli.

  3. Uruchom swoją aplikację. Po uruchomieniu aplikacji przejrzyj dziennik urządzenia i poczekaj na wyzwolenie wyjątku z CrashlyticsTester .

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

    • Android : Wyświetl logi, uruchamiając następującą komendę w terminalu: adb logcat .

  4. Przejdź do panelu Crashlytics konsoli Firebase, aby zobaczyć awarię testową.

    Jeśli odświeżyłeś konsolę i po pięciu minutach nadal nie widzisz awarii testowej, włącz rejestrowanie debugowania , aby sprawdzić, czy aplikacja wysyła raporty o awariach.


I to wszystko! Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Odwiedź pulpit nawigacyjny Crashlytics , aby wyświetlić i sprawdzić wszystkie swoje raporty i statystyki.

Następne kroki

  • (Zalecane) W przypadku aplikacji na Androida korzystających z protokołu IL2CPP uzyskaj 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 pamięci w aplikacji, co jest główną przyczyną luk w zabezpieczeniach aplikacji. Aby skorzystać z tej funkcji debugowania, upewnij się, że Twoja aplikacja korzysta z najnowszego pakietu SDK Crashlytics dla Unity (wersja 10.7.0 lub nowsza) i ma jawnie włączoną funkcję GWP-ASan (wymaga zmodyfikowania manifestu aplikacji na Androida ).
  • Zintegruj się z Google Play , aby móc filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w panelu Crashlytics. Dzięki temu możesz lepiej skoncentrować swój pulpit nawigacyjny na konkretnych kompilacjach.