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 na kompleksową awarię w konsoli Firebase.

Konfiguracja Crashlytics wymaga zadań zarówno w konsoli Firebase, jak i IDE (np. dodanie pliku konfiguracji Firebase oraz Crashlytics SDK). Aby dokończyć konfigurację, musisz wymusić wysłanie pierwszej awarii raport o awariach do Firebase.

Zanim zaczniesz

  1. Dodaj Firebase, jeśli jeszcze nie zostało to zrobione. w projekcie w Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładowej aplikacji.

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

    • Jeśli w istniejącym projekcie Firebase nie masz Google Analytics możesz włączyć Google Analytics z poziomu kartę Integracje usługi > 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 po zarejestrowaniu projektu w Unity w projekcie Firebase mogło już pobrać pakiet SDK Firebase Unity i dodać 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 folderu Komponenty > Importuj pakiet > Pakiet niestandardowy.

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

    Aby skorzystać z logi menu nawigacyjnego dodaj też do swojej aplikacji pakiet SDK Firebase dla Google Analytics (FirebaseAnalytics.unitypackage). Upewnij się, że Usługa Google Analytics jest włączona w projekcie Firebase.

  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 CrashlyticsInitializer obiekt.

  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 monopolowych Unity, te instrukcje nie są niezbędną.

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

Pakiet Unity SDK w wersji 8.6.1 lub nowszej Crashlytics automatycznie zawiera raporty o awariach NDK, co pozwala Crashlytics automatycznie zgłaszać Unity IL2CPP, na urządzeniach z Androidem. Aby jednak wyświetlić symbolizowane zrzuty stosu biblioteki natywnej w panelu Crashlytics, informacje o symbolach musisz przesłać na adres za pomocą interfejsu wiersza poleceń Firebase.

Aby skonfigurować przesyłanie symboli, postępuj zgodnie z instrukcjami zainstalować interfejs wiersza poleceń Firebase.

Jeśli interfejs wiersza poleceń jest już zainstalowany, upewnij się, że został on już zainstalowany zaktualizować ją 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ę.

    Na platformach Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode tak, aby wygenerował i przesyłał pliku symboli zgodnego z Crashlytics na serwery Firebase dla każdej kompilacji.

Android

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

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

    • Utwórz pakiet APK bezpośrednio w edytorze Unity.
      Przed rozpoczęciem budowania upewnij się, że pole wyboru Utwórz symbole.zip jest zaznaczone zaznaczono w oknie Ustawienia kompilacji.

  2. Po zakończeniu kompilacji wygeneruj symbol 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 metodę interfejs wiersza poleceń

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

      • Plik APK został utworzony bezpośrednio w Unity – PATH/TO/SYMBOLS to ścieżka skompresowanego pliku symboli wygenerowane 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 Polecenie interfejsu wiersza poleceń Firebase do generowania i przesyłania pliku symboli

    Zgłoś Opis
    --generator=csym

    Używa starszego generatora plików symboli cSYM zamiast domyślny generator Breakpada

    Niezalecane. Zalecamy użycie wartości domyślnej Generator 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 dodano symbolGenerator { csym() } w konfiguracji kompilacji i chcesz ją zastąpić, aby użyć Zamiast nich jest dostępny Breakpad.

    --dry-run

    Generuje pliki symboli, ale ich nie przesyła

    Ta flaga jest przydatna, gdy chcesz sprawdzić zawartość wysyłane pliki.

    --debug Zawiera dodatkowe informacje na potrzeby debugowania

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

Aby dokończyć konfigurację Crashlytics i zobaczyć dane początkowe w Panel Crashlytics konsoli Firebase, musisz wymusić test .

  1. Znajdź istniejący GameObject i dodaj do niego następujący skrypt. Ten 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 do przesłania pliku symboli.

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

  3. Uruchom aplikację. Po uruchomieniu aplikacji obserwuj dziennik urządzenia i poczekaj na wyjątek od reguły CrashlyticsTester.

    • iOS+: dzienniki w dolnym panelu Xcode.

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

  4. Otwórz panel Crashlytics w konsoli Firebase, aby wyświetlić awarię testową.

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


To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Otwórz panel Crashytics, aby wyświetlić i przeanalizować informacje. wszystkie raporty i statystyki.

Dalsze kroki

  • (Zalecane) W przypadku aplikacji na Androida, które używają IL2CPP, uzyskać pomoc w debugowaniu awarii spowodowanych przez błędy pamięci natywnej przez kolekcja Raporty GWP-ASan. Te błędy związane z pamięcią mogą być związane z uszkodzeniem pamięci w przez użytkowników, co jest główną przyczyną luk w zabezpieczeniach aplikacji. Aby skorzystać z tej funkcji debugowania, upewnij się, że aplikacja korzysta z najnowszego pakietu SDK Crashlytics dla Unity (10.7.0+) i ma Jawne włączenie GWP-ASan (wymaga zmodyfikować plik manifestu aplikacji na Androida).
  • Integracja z Google Play, możesz filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w Panel Crashlytics. Dzięki temu możesz lepiej skupić się na konkretnych kompilacjach w panelu.