| 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.
Konfiguracja 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
Dodaj Firebase do projektu Unity, jeśli nie korzystasz w nim jeszcze z tej usługi. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.
Zalecane: aby automatycznie otrzymywać dzienniki ścieżki nawigacyjnej, które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, błędu niekrytycznego lub zdarzenia ANR, musisz włączyć Google Analytics w projekcie w Firebase.
Jeśli tworzysz nowy projekt w Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.
Jeśli używasz dotychczasowego projektu w Firebase bez włączonej usługi Google Analytics możesz ją włączyć na stronie
Ustawienia > Integracje konsoli Firebase.
Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics
Pamiętaj, że gdy zarejestrowałeś(-aś) projekt Unity w projekcie 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 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 logów ścieżki 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 Crashlytics dla Unity (w wersji 8.6.1 lub nowszej) automatycznie obejmuje 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+: logi znajdziesz w dolnym okienku Xcode.
Android: logi możesz wyświetlić, uruchamiając w terminalu to polecenie:
adb logcat.
W konsoli Firebase otwórz panel DevOps i zaangażowanie > Crashlytics, aby sprawdzić raport o awarii testowej .
Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po 5 minutach, włącz logowanie debugowania aby sprawdzić, czy aplikacja wysyła raporty o awariach.
To wszystko. Crashlytics monitoruje teraz 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 najnowszego pakietu SDK Crashlytics dla Unity (w wersji 10.7.0 lub nowszej) i ma włączoną funkcję GWP-ASan (wymaga to zmodyfikowania manifestu aplikacji na Androida).
Dostosuj konfigurację raportu o awariach dodając raportowanie z możliwością rezygnacji, logi, 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ń o dane, tworzenie niestandardowych paneli i konfigurowanie niestandardowych alertów.