Pierwsze kroki z Firebase Crashlytics

Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Firebase Crashlytics w swojej aplikacji z pakietem SDK Firebase Crashlytics, co pozwoli Ci generować kompleksowe raporty o awariach w konsoli Firebase.

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

Zanim zaczniesz

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

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

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

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

Krok 1. Dodaj pakiet SDK Crashlytics do swojej aplikacji

Pamiętaj, że po zarejestrowaniu projektu Unity w projekcie Firebase możliwe, że został już pobrany pakiet SDK Unity i dodano pakiety opisane w kolejnych krokach.

  1. Pobierz pakiet SDK Firebase Unity, a potem rozpakuj go w dogodnym miejscu. Pakiet SDK Firebase Unity nie jest związany z konkretną platformą.

  2. W otwartym projekcie Unity przejdź do Assets (Zasoby) i wybierz 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 logów menu nawigacyjnego, dodaj też do swojej aplikacji (FirebaseAnalytics.unitypackage) pakiet SDK Firebase dla Google Analytics. Sprawdź, czy w projekcie Firebase jest włączona usługa Google Analytics.

  4. W oknie Import Unity Package (Importuj pakiet Unity) kliknij Import (Importuj).

Krok 2. Zainicjuj Crashlytics

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

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

    2. W inspektorze kliknij Dodaj komponent 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 używają IL2CPP

  • W przypadku aplikacji na Androida, które korzystają z backendu obsługi skryptów monochromatycznych Unity, te czynności nie są konieczne.

  • W przypadku aplikacji platformy Apple te czynności nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode tak, aby przesyłał symbole.

Pakiet Unity SDK w wersji 8.6.1 lub nowszej firmy Crashlytics automatycznie zawiera raportowanie awarii NDK, które umożliwia Crashlytics automatyczne zgłaszanie awarii Unity IL2CPP na Androidzie. Aby jednak zobaczyć w panelu Crashlytics dane o symbolach stosu awarii bibliotek natywnych, 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 interfejs wiersza poleceń jest już zainstalowany, zaktualizuj go do najnowszej wersji.

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

iOS+ (platforma Apple)

  1. W oknie Build Settings (Ustawienia kompilacji) wyeksportuj swój projekt do obszaru roboczego Xcode.

  2. Utwórz aplikację.

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

Urządzenie z Androidem

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

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

    • Utwórz pakiet APK bezpośrednio w edytorze Unity.
      Zanim zaczniesz kompilować, upewnij się, że w oknie Ustawienia kompilacji zaznaczone jest pole wyboru Create Symphony.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 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.

      • Utworzony plik APK bezpośrednio w Unity – PATH/TO/SYMBOLS to ścieżka do skompresowanego pliku symboli, który został wygenerowany w katalogu głównym projektu po zakończeniu kompilacji (np. myproject/myapp-1.0-v100.symbols.zip).

    Wyświetl zaawansowane opcje używania 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

    Korzysta z generatora plików symboli Breakpad.

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

    --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 zakończyć konfigurowanie Crashlytics i zobaczyć początkowe dane w panelu Crashlytics w konsoli Firebase, musisz wymusić awarię testową.

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

    • iOS+: Wtyczka Firebase Unity Editor automatycznie konfiguruje Twój projekt Xcode tak, aby przesłał plik symboli.

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

  3. Uruchom aplikację. Gdy aplikacja zostanie uruchomiona, obserwuj dziennik urządzenia i poczekaj na uruchomienie wyjątku z CrashlyticsTester.

    • iOS+: dzienniki w dolnym panelu Xcode.

    • Android: aby wyświetlić dzienniki, uruchom w terminalu to polecenie: adb logcat.

  4. Aby zobaczyć awarię testową, otwórz panel Crashlytics w konsoli Firebase.

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


To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Otwórz panel Crashlytics, aby przeglądać i analizować wszystkie raporty oraz statystyki.

Dalsze kroki

  • (Zalecane) W przypadku aplikacji na Androida, które używają IL2CPP, uzyskaj pomoc przy debugowaniu awarii spowodowanych przez błędy pamięci natywnej przez zbieranie 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 skorzystać z tej funkcji debugowania, Twoja aplikacja musi korzystać z najnowszego pakietu SDK Crashlytics dla Unity (w wersji 10.7.0 lub nowszej) i mieć wyraźnie włączone narzędzie 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 lepiej skupić się na konkretnych kompilacjach w panelu.