| Wybierz platformę: | iOS+ Android Android NDK Flutter Unity |
Z tego przewodnika dowiesz się, jak rozpocząć korzystanie z Firebase Crashlytics w projekcie Unity.
Po skonfigurowaniu pakietu SDK Firebase Crashlytics w aplikacji możesz otrzymywać obszerne raporty o awariach w konsoli Firebase.
Konfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i w IDE (np. dodania pliku konfiguracyjnego Firebase i pakietu SDK Crashlytics ). Aby zakończyć konfigurację, musisz wymusić awarię testową, aby wysłać pierwszy raport o awariach do Firebase.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, dodaj Firebase do projektu Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.
Zalecane: aby automatycznie otrzymywać dzienniki ścieżek które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, błędów niekrytycznych lub zdarzeń ANR, musisz włączyć Google Analytics w projekcie w Firebase.
Jeśli w dotychczasowym projekcie w Firebase nie jest włączona usługa Google Analytics, możesz ją włączyć na karcie Integracje w sekcji Ustawienia
> Ustawienia projektu w konsoli Firebase.Google AnalyticsJeśli tworzysz nowy projekt w Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.
Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics
Pamiętaj, że gdy zarejestrowałeś(-aś) projekt Unity w projekcie w Firebase, być może masz już pobrany pakiet SDK Firebase Unity i dodane pakiety opisane w kolejnych krokach.
Pobierz pakiet SDK Firebase Unity, a następnie rozpakuj go w dogodnym miejscu. Pakiet SDK Firebase Unity nie jest specyficzny dla żadnej platformy.
W otwartym projekcie Unity przejdź do Assets > Import Package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet).
W rozpakowanym pakiecie SDK wybierz do zaimportowania pakiet SDK Crashlytics (
FirebaseCrashlytics.unitypackage).Aby korzystać z dzienników ścieżek dodaj też do aplikacji [pakiet] SDK Firebase dla Google Analytics (
FirebaseAnalytics.unitypackage). Upewnij się, że usługa Google Analytics jest włączona w projekcie w Firebase.W oknie Import Unity Package (Importowanie pakietu dla Unity) kliknij Import (Importuj).
Krok 2. Zainicjuj Crashlytics
Utwórz nowy skrypt w języku C#, a następnie dodaj go do
GameObjectw scenie.Otwórz pierwszą scenę, a następnie utwórz pusty obiekt
GameObjecto nazwieCrashlyticsInitializer.W inspektorze nowego obiektu kliknij Add Component (Dodaj komponent).
Wybierz skrypt
CrashlyticsInit, aby dodać go do obiektuCrashlyticsInitializer.
Zainicjuj Crashlytics w metodzie
Startskryptu: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 korzystają z IL2CPP.
W przypadku aplikacji na Androida, które korzystają z backendu skryptów Mono w Unity, te czynności nie są potrzebne.
W przypadku aplikacji na platformy Apple te czynności nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania symboli.
Pakiet SDK Unity 8.6.1+ Crashlytics automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne raportowanie awarii Unity IL2CPP na Androidzie. Aby jednak widzieć w panelu Crashlytics zrzuty stosu z symbolami w przypadku awarii biblioteki natywnej, musisz przesłać informacje o symbolach w czasie kompilacji za pomocą interfejsu wiersza poleceń Firebase.
Aby skonfigurować przesyłanie symboli, postępuj zgodnie z instrukcjami, aby zainstalować Firebase interfejs wiersza poleceń.
Jeśli wiersz poleceń został już zainstalowany, zaktualizuj go do najnowszej wersji.
Krok 4. Skompiluj projekt i prześlij symbole
iOS+ (platforma Apple)
W oknie Build Settings (Ustawienia kompilacji) wyeksportuj projekt do obszaru roboczego Xcode.
Skompiluj aplikację.
W przypadku platform Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode tak, aby generować i przesyłać do serwerów Firebase plik symboli zgodny z Crashlytics-compatible dla każdej kompilacji.
Android
W oknie Build Settings (Ustawienia kompilacji) wykonaj jedną z tych czynności:
wyeksportuj projekt do projektu Android Studio, aby go skompilować;
skompiluj plik APK bezpośrednio w edytorze Unity.
Przed kompilacją upewnij się, że w oknie Build Settings (Ustawienia kompilacji) jest zaznaczone pole wyboru Create symbols.zip (Utwórz plik symbols.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ład identyfikatora aplikacji Firebase na Androida:1:567383003300:android:17104a2ced0c9b9bPATH/TO/SYMBOLS: ścieżka do pliku symboli wygenerowanego przez 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.Skompilowano plik APK bezpośrednio w Unity – PATH/TO/SYMBOLS to ścieżka do spakowanego pliku symboli wygenerowanego w katalogu głównym projektu po zakończeniu kompilacji (np.:
).myproject/myapp-1.0-v100.symbols.zip
Wyświetl opcje zaawansowane dotyczące używania Firebase polecenia interfejsu wiersza poleceń do generowania i przesyłania pliku symboli
Flaga Opis --generator=csymZamiast domyślnego generatora Breakpad używa starszego generatora pliku symboli cSYM.
Nie zalecamy używania. Zalecamy używanie domyślnego Breakpad symbol file generator.
--generator=breakpadUżywa generatora pliku symboli Breakpad.
Pamiętaj, że domyślnym generatorem pliku symboli jest Breakpad. Używaj tej flagi tylko wtedy, gdy dodasz
w konfiguracji kompilacji i chcesz ją zastąpić, aby używać Breakpad.symbolGenerator { csym() }--dry-runGeneruje pliki symboli, ale ich nie przesyła.
Ta flaga jest przydatna, jeśli chcesz sprawdzić zawartość plików, które są wysyłane.
--debugPodaje dodatkowe informacje na potrzeby debugowania.
Krok 5. Wymuś awarię testową, aby zakończyć konfigurację
Aby zakończyć konfigurowanie Crashlytics i zobaczyć wstępne dane w Crashlytics panelu Firebase konsoli, musisz wymusić awarię testową.
Znajdź istniejący obiekt
GameObject, a następnie dodaj do niego ten 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"); } } }
Skompiluj aplikację i po zakończeniu kompilacji prześlij informacje o symbolach.
iOS+: wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania pliku symboli.
Android: w przypadku aplikacji na Androida, które korzystają z IL2CPP, uruchom polecenie wiersza poleceń Firebase CLI
crashlytics:symbols:upload, aby przesłać plik symboli.
Uruchom aplikację. Gdy aplikacja będzie działać, obserwuj dziennik urządzenia i poczekaj, aż wyjątek zostanie wywołany przez
CrashlyticsTester.iOS+: dzienniki znajdziesz w dolnym okienku Xcode.
Android: dzienniki znajdziesz, uruchamiając w terminalu to polecenie:
adb logcat.
Otwórz panel Crashlytics w konsoli Firebase, aby zobaczyć 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 Crashlytics, aby wyświetlić i zbadać wszystkie raporty i statystyki.
Dalsze kroki
(Zalecane) W przypadku aplikacji na Androida, które korzystają z IL2CPP, zbieraj raporty GWP-ASan, aby uzyskać pomoc w debugowaniu awarii spowodowanych błędami pamięci natywnej. 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 korzystać z tej funkcji debugowania, upewnij się, że aplikacja używa najnowszej wersji pakietu SDK Crashlytics dla Unity (wersja 10.7.0 lub nowsza) i ma włączoną funkcję GWP-ASan (wymaga to zmodyfikowania manifestu aplikacji na Androida).
Dostosuj konfigurację raportu o awariach dodając raportowanie za zgodą użytkownika, dzienniki, klucze i śledzenie błędów niekrytycznych.
Eksportuj dane do BigQuery lub Cloud Logging aby korzystać z zaawansowanych analiz i funkcji, takich jak wysyłanie zapytań do danych, tworzenie niestandardowych paneli i konfigurowanie niestandardowych alertów.