W tym krótkim wprowadzeniu opisano, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą pakietu Firebase Crashlytics SDK, aby uzyskać szczegółowe raporty o awariach w konsoli Firebase.
Skonfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i IDE (takich jak dodanie pliku konfiguracyjnego Firebase i pakietu Crashlytics SDK). Aby zakończyć konfigurację, musisz wymusić awarię testową, aby wysłać pierwszy raport o awarii do Firebase.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację .
Zalecane : aby korzystać z funkcji, takich jak użytkownicy bez awarii, dzienniki nawigacyjne i alerty dotyczące szybkości, musisz włączyć Google Analytics w swoim projekcie Firebase.
Jeśli w istniejącym projekcie Firebase nie włączono Google Analytics, możesz włączyć Google Analytics na karcie Integracje w > Ustawienia projektu w konsoli Firebase.
Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics podczas procesu tworzenia projektu.
Krok 1 : dodaj pakiet SDK Firebase Crashlytics do swojej aplikacji
Pamiętaj, że po zarejestrowaniu projektu Unity w projekcie Firebase możliwe, że pobrałeś już pakiet Firebase Unity SDK i dodałeś pakiet Crashlytics.
Pobierz pakiet Firebase Unity SDK , a następnie rozpakuj go w dogodnym miejscu.
Pakiet Firebase Unity SDK nie jest specyficzny dla platformy.
W otwartym projekcie Unity przejdź do Zasoby > Importuj pakiet > Pakiet niestandardowy .
Z rozpakowanego pakietu SDK wybierz, aby zaimportować pakiet Crashlytics SDK (
FirebaseCrashlytics.unitypackage
).Możesz też zaimportować dowolny inny obsługiwany produkt Firebase .
W oknie Importuj pakiet Unity kliknij opcję Importuj .
Krok 2 : Zainicjuj Crashlytics
Utwórz nowy skrypt C#, a następnie dodaj go do
GameObject
w scenie.Otwórz swoją pierwszą scenę, a następnie utwórz pusty
GameObject
o nazwieCrashlyticsInitializer
.Kliknij Dodaj składnik w Inspektorze dla nowego obiektu.
Wybierz skrypt
CrashlyticsInit
, aby dodać go do obiektuCrashlyticsInitializer
.
Zainicjuj Crashlytics w metodzie
Start
skryptu:using System.Collections; using System.Collections.Generic; using UnityEngine; // Import Firebase using Firebase; 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; // 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
Czynności opisane w tej sekcji są wymagane tylko w przypadku aplikacji na Androida korzystających z IL2CPP.
W przypadku aplikacji na Androida, które korzystają z zaplecza skryptów Unity's Mono, te kroki nie są potrzebne.
W przypadku aplikacji platformy Apple te kroki nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania symboli.
Unity SDK 8.6.1+ firmy Crashlytics automatycznie zawiera raportowanie awarii NDK, co pozwala Crashlytics na automatyczne zgłaszanie awarii Unity IL2CPP na Androida. Aby jednak zobaczyć symboliczne ślady stosu dla awarii bibliotek natywnych na pulpicie nawigacyjnym Crashlytics, musisz przesłać informacje o symbolu w czasie kompilacji za pomocą interfejsu wiersza polecenia Firebase.
Wykonaj następujące kroki, aby skonfigurować przesyłanie symboli:
Postępuj zgodnie z instrukcjami, aby zainstalować Firebase CLI .
Jeśli już zainstalowałeś CLI, zaktualizuj do najnowszej wersji .
(tylko w przypadku aplikacji korzystających z interfejsu API systemu Android na poziomie 30+) Zaktualizuj szablon
AndroidManifest.xml
swojej aplikacji, aby wyłączyć tagowanie wskaźnika:Zaznacz pole Ustawienia odtwarzacza Android > Ustawienia publikowania > Kompilacja > Niestandardowy główny manifest .
Otwórz szablon manifestu znajdujący się w
Assets/Plugins/Android/AndroidManifest.xml
.Dodaj następujący atrybut do tagu aplikacji:
<application android:allowNativeHeapPointerTagging="false" ... />
Krok 4 : Zbuduj swój projekt i prześlij symbole
iOS+ (platforma Apple)
W oknie dialogowym Ustawienia kompilacji wyeksportuj projekt do obszaru roboczego Xcode.
Zbuduj swoją aplikację.
W przypadku platform Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode w celu wygenerowania i przesłania pliku symboli zgodnego z Crashlytics na serwery Firebase dla każdej kompilacji.
Android
W oknie dialogowym Ustawienia kompilacji wykonaj jedną z następujących czynności:
Eksportuj do projektu Android Studio, aby zbudować swój projekt; lub
Stwórz swój pakiet APK bezpośrednio z edytora Unity.
Przed budowaniem upewnij się, że pole wyboru Utwórz symbole.zip jest zaznaczone w oknie dialogowym Ustawienia budowania .
Po zakończeniu kompilacji wygeneruj plik symboli zgodny z Crashlytics i prześlij go na serwery Firebase, uruchamiając następujące polecenie Firebase CLI:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID : Twój identyfikator aplikacji Firebase na Androida (nie nazwa pakietu)
Przykładowy identyfikator aplikacji Firebase na Androida:1:567383003300:android:17104a2ced0c9b9b
Oto dwa sposoby na znalezienie identyfikatora aplikacji Firebase:
W pliku
google-services.json
identyfikator aplikacji to wartośćmobilesdk_app_id
; lubW konsoli Firebase przejdź do ustawień projektu . Przewiń w dół do karty Twoje aplikacje , a następnie kliknij żądaną aplikację Firebase, aby znaleźć jej identyfikator aplikacji.
PATH/TO/SYMBOLS : Ścieżka do pliku symboli wygenerowanego przez CLI
Eksportowane do projektu Android Studio — PATH/TO/SYMBOLS to
unityLibrary/symbols
, który jest tworzony w katalogu głównym wyeksportowanego projektu po zbudowaniu aplikacji za pomocą Gradle lub Android Studio.Zbuduj pakiet APK bezpośrednio z poziomu Unity — PATH/TO/SYMBOLS to ścieżka do spakowanego pliku symboli wygenerowanego w katalogu głównym projektu po zakończeniu kompilacji (na przykład:
myproject/myapp-1.0-v100.symbols.zip
).
Wyświetl zaawansowane opcje korzystania z polecenia Firebase CLI do generowania i przesyłania plików symboli
Flaga Opis --generator=csym
Używa starszego generatora plików symboli cSYM zamiast domyślnego generatora Breakpad
Nie zaleca się stosowania. Zalecamy użycie domyślnego generatora plików symboli Breakpad.
--generator=breakpad
Używa generatora plików symboli Breakpad
Zauważ, że domyślnym generatorem plików symboli jest Breakpad. Użyj tej flagi tylko wtedy, gdy dodałeś
symbolGenerator { csym() }
w konfiguracji kompilacji i chcesz go zastąpić, aby zamiast tego używać Breakpad.--dry-run
Generuje pliki symboli, ale ich nie przesyła
Ta flaga jest przydatna, jeśli chcesz sprawdzić zawartość wysyłanych plików.
--debug
Zapewnia dodatkowe informacje dotyczące debugowania
Krok 5 : Wymuś awarię testową, aby zakończyć konfigurację
Aby zakończyć konfigurowanie Crashlytics i wyświetlić początkowe dane w panelu Crashlytics konsoli Firebase, musisz wymusić awarię testową.
Znajdź istniejący
GameObject
, a następnie dodaj do niego następujący 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 non-fatal errors 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"); } } }
Stwórz swoją aplikację i prześlij informacje o symbolach po zakończeniu kompilacji.
iOS+ : wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode w celu przesłania pliku symboli.
Android : w przypadku aplikacji na Androida korzystających z IL2CPP uruchom polecenie
crashlytics:symbols:upload
, aby przesłać plik symboli.
Uruchom swoją aplikację. Po uruchomieniu aplikacji obserwuj dziennik urządzenia i poczekaj na wyzwolenie wyjątku przez
CrashlyticsTester
.iOS+ : wyświetlaj dzienniki w dolnym okienku Xcode.
Android : wyświetl logi, uruchamiając w terminalu następujące polecenie:
adb logcat
.
Gdy zobaczysz wyjątek w dzienniku urządzenia, uruchom ponownie aplikację, aby mogła wysłać raport o awarii do Firebase.
Przejdź do panelu Crashlytics w konsoli Firebase, aby zobaczyć awarię testu.
Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po pięciu minutach, włącz rejestrowanie debugowania , aby sprawdzić, czy aplikacja wysyła raporty o awariach.
I to wszystko! Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Odwiedź panel Crashlytics , aby wyświetlić i zbadać wszystkie swoje raporty i statystyki.
Następne kroki
- Dostosuj ustawienia swojego raportu o awariach, dodając raporty, dzienniki, klucze i śledzenie błędów niekrytycznych.
- Zintegruj się z Google Play , aby móc filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w panelu Crashlytics. Dzięki temu możesz lepiej skoncentrować swój pulpit nawigacyjny na konkretnych kompilacjach.