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
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ę .
Zalecane : aby uzyskać dostęp do takich funkcji, jak użytkownicy bez awarii, logi nawigacyjne i alerty dotyczące prędkości, 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
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ś pakiet Crashlytics.
Pobierz pakiet SDK Firebase Unity , a następnie rozpakuj go w dogodnym miejscu.
Zestaw SDK Firebase Unity nie jest specyficzny dla platformy.
W otwartym projekcie Unity przejdź do opcji Zasoby > Importuj pakiet > Pakiet niestandardowy .
Z rozpakowanego zestawu SDK wybierz opcję zaimportowania zestawu SDK Crashlytics (
FirebaseCrashlytics.unitypackage
).Możesz także zaimportować dowolny inny obsługiwany produkt Firebase .
W oknie Importuj pakiet Unity kliknij opcję Importuj .
Krok 2 : Zainicjuj Crashlytics
Utwórz nowy skrypt C#, a następnie dodaj go do obiektu
GameObject
w scenie.Otwórz swoją pierwszą scenę, a następnie utwórz pusty
GameObject
o nazwieCrashlyticsInitializer
.Kliknij opcję Dodaj komponent w Inspektorze 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) 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)
W oknie dialogowym Ustawienia kompilacji wyeksportuj projekt do obszaru roboczego Xcode.
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
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 .
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
Oto dwa sposoby znalezienia identyfikatora aplikacji Firebase:
W pliku
google-services.json
identyfikator aplikacji to wartośćmobilesdk_app_id
; LubW konsoli Firebase przejdź do ustawień projektu . Przewiń w dół do karty Twoje aplikacje , a następnie kliknij żądaną aplikację Firebase, aby znaleźć jej identyfikator aplikacji.
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ą.
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"); } } }
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.
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
.
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 modyfikacji manifestu aplikacji na Androida ).
- Dostosuj konfigurację raportu o awariach , dodając raporty wyrażające zgodę, dzienniki, klucze i śledzenie błędów niekrytycznych.
- 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.