Ten krótki przewodnik zawiera instrukcje konfigurowania w aplikacji pakietu SDK Firebase Crashlytics, aby otrzymywać w konsoli Firebase kompleksowe raporty o awariach.Firebase Crashlytics
Konfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i w Twoim IDE (np. dodawania pliku konfiguracyjnego Firebase i pakietu SDK Crashlytics). Aby zakończyć konfigurację, musisz wymusić awarię testową, aby wysłać do Firebase pierwszy raport o awarii.
Zanim zaczniesz
Dodaj Firebase do projektu Unity, jeśli nie został jeszcze dodany. Jeśli nie masz projektu w Unity, możesz pobrać przykładową aplikację.
Zalecane: aby automatycznie otrzymywać logi ścieżki, które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, niekrytycznych błędów lub zdarzeń ANR, musisz włączyć Google Analytics w projekcie Firebase.
Jeśli w dotychczasowym projekcie Firebase nie masz włączonej usługi Google Analytics, możesz ją włączyć na karcie Integracje w sekcji
w konsoli > Ustawienia projektuFirebase. Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.
Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics
Pamiętaj, że podczas rejestrowania projektu Unity w projekcie Firebase mogłeś/mogłaś pobrać pakiet SDK Firebase Unity i dodać pakiety opisane w następnych krokach.
Pobierz pakiet SDK Firebase Unity, a potem rozpakuj go w wygodnym miejscu. Pakiet SDK Firebase Unity nie jest związany z konkretną platformą.
W otwartym projekcie Unity przejdź do Zasoby > Importuj pakiet > Pakiet niestandardowy.
W rozpakowanym pakiecie SDK wybierz pakiet SDK Crashlytics (
FirebaseCrashlytics.unitypackage
).Aby korzystać z logów menu nawigacyjnego, dodaj też do swojej aplikacji (
FirebaseAnalytics.unitypackage
) pakiet SDK Firebase dla Google Analytics. Sprawdź, czy w projekcie Firebase jest włączona usługa Google Analytics.W oknie Importowanie pakietu dla Unity kliknij Importuj.
Krok 2. Inicjalizacja Crashlytics
Utwórz nowy skrypt C#, a potem dodaj go do
GameObject
w scenie.Otwórz pierwszą scenę, a potem utwórz pusty
GameObject
o nazwieCrashlyticsInitializer
.W inspektorze nowego obiektu kliknij Dodaj komponent.
Wybierz skrypt
CrashlyticsInit
, aby dodać go do obiektuCrashlyticsInitializer
.
Inicjalizacja Crashlytics w metodzie skryptu
Start
: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 back-endu skryptowego Mono w Unity, nie trzeba wykonywać tych czynności.
W przypadku aplikacji na platformy Apple te kroki nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania symboli.
Pakiet Unity SDK 8.6.1 i nowsze wersji Crashlytics automatycznie zawiera raportowanie awarii NDK, co pozwala Crashlytics automatycznie zgłaszać awarie Unity IL2CPP na Androidzie. Aby jednak zobaczyć symbolizowane ścieżki stosu dotyczące awarii bibliotek natywnych w panelu Crashlytics, musisz przesłać informacje o symbolach w momencie kompilacji za pomocą interfejsu wiersza poleceń Firebase.
Aby skonfigurować przesyłanie symboli, postępuj zgodnie z instrukcjami instalowania interfejsu wiersza poleceń Firebase.
Jeśli wiersz poleceń jest już zainstalowany, zaktualizuj go do najnowszej wersji.
Krok 4. Utwórz projekt i prześlij symbole
iOS+ (platforma Apple)
W oknie Ustawienia kompilacji wyeksportuj projekt do obszaru roboczego Xcode.
Utwórz aplikację.
W przypadku platform Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode, aby generować i przesyłać na serwery Firebase plik symboli zgodny z Crashlytics dla każdej kompilacji.
Android
W oknie Ustawienia kompilacji wykonaj jedną z tych czynności:
wyeksportować projekt do Android Studio, aby go skompilować;
Utwórz plik APK bezpośrednio w Edytorze Unity.
Zanim rozpoczniesz kompilację, w oknie Ustawienia kompilacji zaznacz 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 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:17104a2ced0c9b9b
PATH/TO/SYMBOLS: ścieżka do pliku symboli wygenerowanego przez interfejs wiersza poleceń.
Eksportowanie do projektu w Android Studio – PATH/TO/SYMBOLS to katalog
unityLibrary/symbols
, który jest tworzony w pliku głównym wyeksportowanego projektu po skompilowaniu aplikacji za pomocą Gradle lub Android Studio.Kompilacja pliku APK 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 zaawansowanych opcji korzystania z polecenia wiersza poleceń Firebase do generowania i przesyłania plików symboli
Flaga Opis --generator=csym
Zamiast domyślnego generatora Breakpad używa starszego generatora plików symboli cSYM.
Nie zalecamy ich używania. Zalecamy użycie domyślnego generatora plików symboli Breakpad.
--generator=breakpad
Korzysta z generatora plików symboli Breakpad.
Pamiętaj, że domyślnie do generowania pliku symboli służy Breakpad. Używaj tej flagi tylko wtedy, gdy do konfiguracji kompilacji dodano flagę
i chcesz ją zastąpić, aby zamiast niej używać Breakpada.symbolGenerator { csym() }
--dry-run
generuje pliki symboli, ale ich nie przesyła;
Ten znacznik jest przydatny, jeśli chcesz sprawdzić zawartość wysyłanych plików.
--debug
Zawiera dodatkowe informacje na potrzeby debugowania
Krok 5. Wymuś awarię testową, aby zakończyć konfigurowanie
Aby zakończyć konfigurowanie usługi Crashlytics i zobaczyć dane początkowe w panelu Crashlytics w konsoli Firebase, musisz wymusić awarię testową.
Znajdź istniejący
GameObject
, a potem dodaj do niego ten skrypt. Ten skrypt spowoduje awarię testową po kilku sekundach od uruchomienia 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"); } } }
Po zakończeniu kompilacji skompiluj aplikację i prześlij informacje o symbolach.
iOS+: wtyczka Firebase Unity Editor automatycznie skonfiguruje projekt Xcode, aby przesł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 aplikacja będzie działać, obserwuj dziennik urządzenia i czekaj, aż
CrashlyticsTester
uruchomi wyjątek.iOS+: wyświetlaj dzienniki w dolnym panelu Xcode.
Android: aby wyświetlić logi, uruchom w terminalu to polecenie:
adb logcat
.
Aby zobaczyć testowy błąd krytyczny, otwórz panel Crashlytics konsoli Firebase.
Jeśli po 5 minutach od odświeżenia konsoli nadal nie widzisz testowego błędu, włącz debugowanie, aby sprawdzić, czy aplikacja wysyła raporty o błędach.
To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Otwórz panel Crashlytics, aby wyświetlić wszystkie raporty i statystyki oraz je analizować.
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. Aby to zrobić, zbieraj raporty GWP-ASan. Te błędy związane z pamięcią mogą być związane z uszkodzeniem pamięci w aplikacji, co jest główną przyczyną luk w zabezpieczeniach aplikacji. Aby skorzystać z tej funkcji debugowania, Twoja aplikacja musi używać najnowszego pakietu SDK Crashlytics dla Unity (w wersji 10.7.0 lub nowszej) i mieć wyraźnie włączone rozszerzenie GWP-ASan (wymaga to zmodyfikowania pliku manifestu aplikacji na Androida).
- Dostosuj konfigurację raportowania awarii, dodając raportowanie z opcją opt-in, logy, klucze i śledzenie błędów niekrytycznych.
- Integracja z Google Play, dzięki której możesz filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w panelu Crashlytics. Dzięki temu możesz lepiej skupić się na konkretnych kompilacjach w panelu.