| Wybierz platformę: | iOS+ Android Android NDK Flutter Unity |
Z tego przewodnika dowiesz się, jak zacząć korzystać z Firebase Crashlytics w projekcie Unity.
Po skonfigurowaniu pakietu SDK Firebase Crashlytics w aplikacji możesz otrzymywać szczegółowe raporty o awariach w konsoli Firebase.
Konfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i w środowisku IDE (np. dodanie pliku konfiguracji Firebase i pakietu SDK Crashlytics). Aby dokończyć konfigurację, musisz wymusić testową awarię i wysłać pierwszy raport o awarii 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ć logi działań użytkownika, które pomogą Ci zrozumieć działania użytkownika prowadzące do awarii, błędu niekrytycznego lub błędu 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 w konsoli Firebase.
Krok 1. Dodaj pakiet SDK Crashlytics do aplikacji.
Pamiętaj, że podczas rejestrowania projektu Unity w projekcie w Firebase być może udało Ci się już pobrać pakiet SDK Firebase Unity i dodać pakiety opisane w kolejnych krokach.
Pobierz pakiet SDK Firebase Unity, a następnie rozpakuj go w dogodnym miejscu. Pakiet SDK Firebase Unity nie jest przeznaczony na konkretną platformę.
W otwartym projekcie Unity kliknij Assets (Zasoby) > Import Package (Importuj pakiet) > Custom Package (Pakiet niestandardowy).
Z rozpakowanego pakietu SDK wybierz importowanie pakietu SDK Crashlytics (
FirebaseCrashlytics.unitypackage).Aby korzystać z logów działań użytkownika, dodaj też do aplikacji pakiet SDK Firebase dla Google Analytics (
FirebaseAnalytics.unitypackage). Upewnij się, że w projekcie w Firebase jest włączona usługa Google Analytics.W oknie Import Unity Package (Importowanie pakietu dla Unity) kliknij Import (Importuj).
Krok 2. Zainicjuj Crashlytics
Utwórz nowy skrypt C#, a następnie dodaj go do elementu
GameObjectw scenie.Otwórz pierwszą scenę, a następnie utwórz pusty obiekt
GameObjecto nazwieCrashlyticsInitializer.W Inspektorze nowego obiektu kliknij 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 używają IL2CPP.
W przypadku aplikacji na Androida, które korzystają z backendu skryptów Mono w Unity, te czynności nie są konieczne.
W przypadku aplikacji na platformy Apple te kroki nie są konieczne, ponieważ wtyczka edytora Firebase Unity automatycznie konfiguruje projekt Xcode do przesyłania symboli.
Pakiet SDK Crashlytics dla Unity (w wersji 8.6.1 lub nowszej) automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne zgłaszanie awarii IL2CPP Unity na Androidzie. Aby jednak w panelu Crashlytics wyświetlać zrzuty stosu z symbolami dotyczące awarii biblioteki natywnej, musisz przesłać informacje o symbolach podczas kompilacji za pomocą interfejsu wiersza poleceń Firebase.
Aby skonfigurować przesyłanie symboli, postępuj zgodnie z instrukcjami instalacji interfejsu wiersza poleceń Firebase.
Jeśli masz już zainstalowany interfejs wiersza poleceń, 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.
Utwórz aplikację.
W przypadku platform Apple wtyczka edytora Firebase Unity automatycznie konfiguruje projekt Xcode, aby generować i przesyłać plik symboli zgodny z Crashlytics na serwery Firebase dla każdej kompilacji.
Android
W oknie Build Settings (Ustawienia kompilacji) wykonaj jedną z tych czynności:
wyeksportować do projektu Android Studio, aby go utworzyć;
Utwórz plik APK bezpośrednio w edytorze Unity.
Przed kompilacją upewnij się, że w oknie Ustawienia kompilacji jest zaznaczone pole wyboru 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 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: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 głównym katalogu wyeksportowanego projektu po utworzeniu aplikacji za pomocą Gradle lub Android Studio.Plik APK został utworzony bezpośrednio w Unity – PATH/TO/SYMBOLS to ścieżka do skompresowanego pliku symboli wygenerowanego w katalogu głównym projektu po zakończeniu kompilacji (np.
).myproject/myapp-1.0-v100.symbols.zip
Wyświetlanie opcji zaawansowanych dotyczących używania polecenia interfejsu wiersza poleceń Firebase do generowania plików symboli i ich przesyłania
Flaga Opis --generator=csymUżywa starszego generatora plików symboli cSYM zamiast domyślnego generatora Breakpad
Nie zalecamy korzystania z tej opcji. Zalecamy użycie domyślnego generatora plików symboli Breakpad.
--generator=breakpadużywa generatora plików symboli Breakpad,
Pamiętaj, że domyślnie generowanie plików symboli odbywa się w formacie Breakpad. Używaj tej flagi tylko wtedy, gdy w konfiguracji kompilacji dodano
i chcesz zastąpić tę opcję, aby używać Breakpad.symbolGenerator { csym() }--dry-runGeneruje pliki symboli, ale ich nie przesyła.
Ten znacznik jest przydatny, jeśli chcesz sprawdzić zawartość wysyłanych plików.
--debugzawiera dodatkowe informacje na potrzeby debugowania;
Krok 5. Wymuś testową awarię, aby zakończyć konfigurację
Aby dokończyć konfigurowanie usługi Crashlytics i zobaczyć początkowe dane w panelu Crashlytics w konsoli Firebase, musisz wymusić testową awarię.
Znajdź istniejący element
GameObject, a następnie dodaj do niego ten skrypt. Ten skrypt spowoduje testową awarię 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 edytora Firebase Unity automatycznie konfiguruje projekt Xcode, aby przesłać plik symboli.
Android: w przypadku aplikacji na Androida, które używają IL2CPP, uruchom polecenie Firebase interfejsu wiersza poleceń
crashlytics:symbols:upload, aby przesłać plik symboli.
Uruchom aplikację. Gdy aplikacja będzie działać, obserwuj dziennik urządzenia i poczekaj, aż
CrashlyticsTesterwywoła wyjątek.iOS+: dzienniki możesz wyświetlić w dolnym panelu Xcode.
Android: wyświetl logi, uruchamiając w terminalu to polecenie:
adb logcat.
W konsoli Firebase otwórz panel DevOps i zaangażowanie > Crashlytics, aby sprawdzić, czy jest tam raport o awarii testowej.
Jeśli po odświeżeniu konsoli i odczekaniu 5 minut nadal nie widzisz testowej awarii, włącz dziennik 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 przeanalizować wszystkie raporty i statystyki.
Dalsze kroki
(Zalecane) W przypadku aplikacji na Androida, które używają IL2CPP, możesz uzyskać 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 korzystać z tej funkcji debugowania, upewnij się, że Twoja aplikacja używa najnowszego pakietu SDK Crashlytics dla Unity (w wersji 10.7.0 lub nowszej) i ma wyraźnie włączoną funkcję GWP-ASan (wymaga to zmodyfikowania pliku manifestu aplikacji na Androida).
Dostosuj konfigurację raportów o awariach, dodając raportowanie po wyrażeniu zgody, dzienniki, klucze i śledzenie błędów niekrytycznych.
Eksportuj dane do BigQuery lub Cloud Logging, aby korzystać z zaawansowanych funkcji i analiz, takich jak wysyłanie zapytań do danych, tworzenie niestandardowych paneli i konfigurowanie alertów niestandardowych.