Z tego przewodnika dowiesz się, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą pakietu Firebase Crashlytics SDK, aby otrzymywać w Firebase konsoli szczegółowe raporty o awariach.
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ć do Firebase pierwszy raport o awarii.
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, które doprowadziły do awarii, błędu niekrytycznego lub zdarzenia 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 - > Ustawienia projektu w konsoli Firebase.Google Analytics
- 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 gdy zarejestrujesz projekt Unity w projekcie Firebase, być może pobierzesz już pakiet SDK Firebase Unity i dodasz 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 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 nazwie- CrashlyticsInitializer.
- W Inspektorze nowego obiektu kliknij Add Component (Dodaj komponent). 
- Wybierz skrypt - CrashlyticsInit, aby dodać go do obiektu- CrashlyticsInitializer.
 
- 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 Mono do obsługi skryptów 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 SDK Unity w wersji 8.6.1 lub nowszej automatycznie zawiera raportowanie awarii NDK, co umożliwia Crashlytics automatyczne raportowanie awarii Unity IL2CPP na Androidzie.Crashlytics Aby jednak w panelu Crashlytics wyświetlać ślady stosu z symbolami w przypadku awarii biblioteki natywnej, musisz przesłać informacje o symbolach w momencie kompilacji za pomocą interfejsu wiersza poleceń Firebase.
Aby przygotować się do przesyłania symboli, postępuj zgodnie z instrukcjami dotyczącymi instalowania 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
symboliczne ś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ć projekt do 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:17104a2ced0c9b9b
- PATH/TO/SYMBOLS: ścieżka do pliku symboli wygenerowanego przez interfejs wiersza poleceń. - Wyeksportowany do projektu Android Studio – PATH/TO/SYMBOLS to katalog - unityLibrary/symbols, który jest tworzony w katalogu głównym wyeksportowanego 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 polecenia interfejsu wiersza poleceń Firebase do generowania i przesyłania pliku symboli - Flaga - Opis - --generator=csym- Uż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=breakpad- korzysta 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 - symbolGenerator { csym() }- --dry-run- Generuje pliki symboli, ale ich nie przesyła. - Ten znacznik przydaje się, jeśli chcesz sprawdzić zawartość wysyłanych plików. - --debug- Zawiera 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
 
- Otwórz Crashlyticspanel konsoli Firebase, aby zobaczyć testowy awarię. - 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 Crashlyticspanel, 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 awariach, dodając raportowanie za zgodą użytkowników, dzienniki, klucze i śledzenie błędów niekrytycznych.
- Zintegruj z Google Play, aby filtrować raporty o awariach aplikacji na Androida według Google Play bezpośrednio w Crashlytics panelu. Dzięki temu możesz lepiej dostosować panel do konkretnych wersji.