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
Dodaj Firebase do projektu Unity, jeśli jeszcze go nie masz. Jeśli nie masz projektu w Unity, możesz pobrać przykładową aplikację.
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
w konsoli Firebase. > Ustawienia projektu 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.
Pobierz pakiet SDK Firebase Unity, a potem rozpakuj go w dogodnym miejscu. Pakiet SDK Firebase Unity nie jest związany z konkretną platformą.
W otwartym projekcie Unity przejdź do Assets (Zasoby) i wybierz Import Package (Importuj pakiet) > Custom Package (Pakiet niestandardowy).
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.W oknie Import Unity Package (Importuj pakiet Unity) kliknij Import (Importuj).
Krok 2. Zainicjuj Crashlytics
Utwórz nowy skrypt w C#, a następnie dodaj go do skryptu
GameObject
w scenie.Otwórz pierwszą scenę i utwórz pusty element
GameObject
o nazwieCrashlyticsInitializer
.W inspektorze kliknij Dodaj komponent nowego obiektu.
Wybierz skrypt
CrashlyticsInit
, aby dodać go do obiektuCrashlyticsInitializer
.
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)
W oknie Build Settings (Ustawienia kompilacji) wyeksportuj swój projekt do obszaru roboczego Xcode.
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
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.
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
i chcesz je zastąpić, aby używać Breakpada.symbolGenerator { csym() }
--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ą.
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"); } } }
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.
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
.
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).
- Dostosuj konfigurację raportów o awariach, dodając raporty o awariach, logi, klucze i śledzenie błędów niekrytycznych.
- 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.