| 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 uzyskać szczegółowe raporty o awariach w Firebase konsoli.
Konfigurowanie Crashlytics wymaga wykonania działań zarówno w Firebase konsoli, jak i w IDE (np. dodania pliku konfiguracyjnego Firebase i Crashlytics pakietu SDK). Aby dokończyć konfigurację, musisz wymusić testowe awarie, aby wysłać pierwszy raport o awarii do Firebase.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.
Zalecane: aby automatycznie otrzymywać dzienniki ścieżki i poznawać działania użytkowników prowadzące do awarii, błędów niekrytycznych lub zdarzeń ANR, musisz włączyć Google Analytics w projekcie 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 do aplikacji pakiet SDK Crashlytics
Pamiętaj, że gdy zarejestrujesz projekt Unity w projekcie w Firebase, możesz już mieć pobrany pakiet SDK Firebase Unity i dodane pakiety opisane w kolejnych krokach.
Pobierz Firebase Unity SDK, a następnie rozpakuj go w wygodnym miejscu. Pakiet SDK Firebase Unity nie jest przeznaczony dla konkretnej platformy.
W otwartym projekcie Unity kliknij Assets (Zasoby) > Import Package (Importuj pakiet) > Custom Package (Własny pakiet).
W rozpakowanym pakiecie SDK wybierz pakiet SDK Crashlytics do zaimportowania (
FirebaseCrashlytics.unitypackage).Aby korzystać z logów ścieżki, dodaj do aplikacji pakiet SDK Firebase dla Google Analytics (
FirebaseAnalytics.unitypackage). Upewnij się, że w projekcie w Firebase włączona jest usługa Google Analytics.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 obiektu
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) Przygotuj się do przesyłania 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 platformy skryptowej Mono w Unity, te czynności nie są potrzebne.
W przypadku aplikacji na platformę Apple te czynności nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania symboli.
Pakiet Crashlytics SDK na platformę Unity (wersja 8.6.1 lub nowsza) automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne raportowanie awarii Unity IL2CPP na Androidzie. Aby jednak w panelu Crashlytics wyświetlać zsymbolizowane ślady stosu w przypadku awarii biblioteki natywnej, musisz przesłać informacje o symbolach w czasie kompilacji za pomocą interfejsu wiersza poleceń Firebase.
Aby przygotować się do przesyłania symboli, postępuj zgodnie z instrukcjami instalacji interfejsu wiersza poleceń Firebase.
Jeśli interfejs CLI jest już zainstalowany, zaktualizuj go do najnowszej wersji.
Krok 4. Utwórz projekt i prześlij symbole
zsymbolizowane ślady stosu.iOS+ (platforma Apple)
W oknie Ustawienia kompilacji wyeksportuj projekt do obszaru roboczego Xcode.
Stwórz aplikację.
W przypadku platform Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode, aby generować i przesyłać do serwerów Firebase plik symboli zgodny z Crashlytics dla każdej kompilacji.
Android
W oknie Ustawienia kompilacji wykonaj jedną z tych czynności:
wyeksportować do projektu Android Studio, aby go skompilować;
Twórz pliki APK bezpośrednio w edytorze Unity.
Zanim rozpoczniesz kompilację, upewnij się, że w oknie Ustawienia kompilacji zaznaczone jest 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ń.
Wyeksportowany do projektu Android Studio – PATH/TO/SYMBOLS to
unityLibrary/symbolskatalog, który jest tworzony w wyeksportowanym katalogu głównym projektu po skompilowaniu aplikacji za pomocą Gradle lub Android Studio.Utworzono 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świetlanie opcji zaawansowanych dotyczących używania Firebase polecenia interfejsu wiersza poleceń do generowania i przesyłania pliku symboli
Flaga Opis --generator=csymUżywa starszego generatora plików symboli cSYM zamiast domyślnego generatora Breakpad.
Nie zalecamy korzystania z tej funkcji. Zalecamy użycie domyślnego generatora plików symboli Breakpad.
--generator=breakpadkorzysta z generatora plików symboli Breakpad,
Pamiętaj, że domyślnie do generowania pliku symboli używany jest Breakpad. Używaj tej flagi tylko wtedy, gdy w konfiguracji kompilacji dodano
i chcesz zastąpić to ustawienie, aby używać Breakpada.symbolGenerator { csym() }--dry-runGeneruje pliki symboli, ale ich nie przesyła.
Ten znacznik przydaje się, jeśli chcesz sprawdzić zawartość wysyłanych plików.
--debugZawiera dodatkowe informacje na potrzeby debugowania
Krok 5. Wymuś awarię testową, aby zakończyć konfigurację
Aby dokończyć konfigurowanie Crashlytics i wyświetlić pierwsze dane na panelu Crashlytics w konsoli Firebase, musisz wymusić testowe awarie.
Znajdź istniejący
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 prześlij informacje o symbolach po zakończeniu kompilacji.
iOS+: wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode, aby przesyłać plik symboli.
Android: w przypadku aplikacji na Androida, które korzystają z IL2CPP, uruchom polecenie Firebase CLI
crashlytics:symbols:upload, aby przesłać plik symboli.
Uruchom aplikację. Gdy będzie działać, obserwuj dziennik urządzenia i poczekaj, aż wyjątek zostanie wywołany z
CrashlyticsTester.iOS+: wyświetl dzienniki w dolnym panelu Xcode.
Android: wyświetl logi, uruchamiając w terminalu to polecenie:
adb logcat
W konsoli Firebase otwórz DevOps i zaangażowanie > Crashlytics panel, aby sprawdzić raport o błędzie testowym.
Jeśli po odświeżeniu konsoli nadal nie widzisz testowego błędu po 5 minutach, włącz rejestrowanie debugowania, aby sprawdzić, czy aplikacja wysyła raporty o błędach.
To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Otwórz Crashlytics panel, aby wyświetlić i sprawdzić wszystkie raporty i statystyki.
Dalsze kroki
(Zalecane) W przypadku aplikacji na Androida, które korzystają z 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 zawartości 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 Crashlyticspakietu SDK do Unity (wersja 10.7.0 lub nowsza) i ma wyraźnie włączoną funkcję GWP-ASan (wymaga to zmodyfikowania pliku manifestu aplikacji na Androida).
Dostosuj konfigurację raportu o awarii, 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ń dotyczących danych, tworzenie niestandardowych paneli i konfigurowanie niestandardowych alertów.