Check out what’s new from Firebase at Google I/O 2022. Learn more

Zacznij korzystać z Firebase Crashlytics

W tym krótkim wprowadzeniu opisano, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą pakietu Firebase Crashlytics SDK, aby uzyskać szczegółowe raporty o awariach w konsoli Firebase.

Skonfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i IDE (takich jak dodanie pliku konfiguracyjnego Firebase i pakietu Crashlytics SDK). 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 korzystać z funkcji, takich jak użytkownicy bez awarii, dzienniki nawigacyjne i alerty dotyczące szybkości, musisz włączyć Google Analytics w swoim projekcie Firebase.

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

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

Krok 1 : dodaj pakiet SDK Firebase Crashlytics do swojej aplikacji

Pamiętaj, że po zarejestrowaniu projektu Unity w projekcie Firebase możliwe, że pobrałeś już pakiet Firebase Unity SDK i dodałeś pakiet Crashlytics.

  1. Pobierz pakiet Firebase Unity SDK , a następnie rozpakuj go w dogodnym miejscu.

    Pakiet Firebase Unity SDK nie jest specyficzny dla platformy.

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

  3. Z rozpakowanego pakietu SDK wybierz, aby zaimportować pakiet Crashlytics SDK ( FirebaseCrashlytics.unitypackage ).

    Możesz też zaimportować dowolny inny obsługiwany produkt Firebase .

  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 GameObject w scenie.

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

    2. Kliknij Dodaj składnik w Inspektorze dla 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
    using Firebase;
    
    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;
    
                    // 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

Czynności opisane w tej sekcji są wymagane tylko w przypadku aplikacji na Androida korzystających z IL2CPP.

  • W przypadku aplikacji na Androida, które korzystają z zaplecza skryptów Unity's Mono, te kroki nie są potrzebne.

  • W przypadku aplikacji platformy Apple te kroki nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania symboli.

Unity SDK 8.6.1+ firmy Crashlytics automatycznie zawiera raportowanie awarii NDK, co pozwala Crashlytics na automatyczne zgłaszanie awarii Unity IL2CPP na Androida. Aby jednak zobaczyć symboliczne ślady stosu dla awarii bibliotek natywnych na pulpicie nawigacyjnym Crashlytics, musisz przesłać informacje o symbolu w czasie kompilacji za pomocą interfejsu wiersza polecenia Firebase.

Wykonaj następujące kroki, aby skonfigurować przesyłanie symboli:

  1. Postępuj zgodnie z instrukcjami, aby zainstalować Firebase CLI .

    Jeśli już zainstalowałeś CLI, zaktualizuj do najnowszej wersji .

  2. (tylko w przypadku aplikacji korzystających z interfejsu API systemu Android na poziomie 30+) Zaktualizuj szablon AndroidManifest.xml swojej aplikacji, aby wyłączyć tagowanie wskaźnika:

    1. Zaznacz pole Ustawienia odtwarzacza Android > Ustawienia publikowania > Kompilacja > Niestandardowy główny manifest .

    2. Otwórz szablon manifestu znajdujący się w Assets/Plugins/Android/AndroidManifest.xml .

    3. Dodaj następujący atrybut do tagu aplikacji: <application android:allowNativeHeapPointerTagging="false" ... />

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

    • Stwórz swój pakiet APK bezpośrednio z edytora Unity.
      Przed budowaniem upewnij się, że pole wyboru Utwórz symbole.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

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

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

    Wyświetl zaawansowane opcje korzystania z 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

    Zauważ, że domyślnym generatorem plików symboli jest Breakpad. Użyj tej flagi tylko wtedy, gdy 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 Zapewnia dodatkowe informacje dotyczące debugowania

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

Aby zakończyć konfigurowanie Crashlytics i wyświetlić początkowe dane w panelu 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 non-fatal errors 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. Stwórz swoją 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 IL2CPP uruchom polecenie crashlytics:symbols:upload , aby przesłać plik symboli.

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

    • iOS+ : wyświetlaj dzienniki w dolnym okienku Xcode.

    • Android : wyświetl logi, uruchamiając w terminalu następujące polecenie: adb logcat .

  4. Gdy zobaczysz wyjątek w dzienniku urządzenia, uruchom ponownie aplikację, aby mogła wysłać raport o awarii do Firebase.

  5. Przejdź do panelu Crashlytics w konsoli Firebase, aby zobaczyć awarię testu.

    Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po pięciu minutach, 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ź panel Crashlytics , aby wyświetlić i zbadać wszystkie swoje raporty i statystyki.

Następne kroki

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