Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować usługę Firebase Crashlytics w Twojej aplikacji. z pakietem SDK Firebase Crashlytics, aby uniknąć kompleksowej awarii w konsoli Firebase.
Skonfigurowanie Crashlytics wymaga zadań zarówno w konsoli Firebase, jak i swojego IDE (np. dodanie pliku konfiguracji Firebase oraz Crashlytics SDK). Aby dokończyć konfigurację, musisz wymusić wysłanie pierwszej awarii raport o awariach do Firebase.
Zanim zaczniesz
Dodaj Firebase, jeśli jeszcze nie zostało to zrobione. w projekcie w Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładowej aplikacji.
Zalecane: aby automatycznie pobierać logi menu nawigacyjnego aby poznać działania użytkowników, które prowadzą do awarii, zdarzeń niekrytycznych lub błędów ANR; musisz włączyć Google Analytics w projekcie Firebase.
Jeśli w istniejącym projekcie Firebase nie ma Google Analytics możesz włączyć Google Analytics z poziomu Karta Integracje
w konsoli > Ustawienia projektuFirebase. Jeśli tworzysz nowy projekt Firebase, włącz funkcję Google Analytics podczas tworzenia projektu.
Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics
Pamiętaj, że po zarejestrowaniu projektu w Unity w projekcie Firebase mogło już pobrać pakiet SDK Firebase Unity i dodać pakiety opisane w kolejnych krokach.
Pobierz Firebase Unity SDK, a potem rozpakuj go w dogodnym miejscu. Pakiet SDK Firebase Unity nie jest związany z konkretną platformą.
W otwartym projekcie Unity przejdź do folderu Komponenty > Importuj pakiet > Pakiet niestandardowy.
W rozpakowanym pakiecie SDK wybierz pakiet SDK Crashlytics do zaimportowania (
FirebaseCrashlytics.unitypackage
).Aby skorzystać z logi menu nawigacyjnego dodaj też do swojej aplikacji pakiet SDK Firebase dla Google Analytics (
FirebaseAnalytics.unitypackage
). Upewnij się, że Usługa Google Analytics jest włączona w projekcie Firebase.W oknie Import Unity Package (Importuj pakiet Unity) kliknij Import (Importuj).
Krok 2. Zainicjuj usługę Crashlytics
Utwórz nowy skrypt w C#, a następnie dodaj go do skryptu
GameObject
w scenie.Otwórz pierwszą scenę i utwórz pusty element
GameObject
o nazwieCrashlyticsInitializer
W inspektorze kliknij Dodaj komponent nowego obiektu.
Wybierz skrypt
CrashlyticsInit
, aby dodać go doCrashlyticsInitializer
obiekt.
Zainicjuj Crashlytics w metodzie
Start
skryptu: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 obsługi skryptów monopolowych Unity, te instrukcje nie są niezbędną.
W przypadku aplikacji platformy Apple te czynności nie są konieczne, ponieważ Firebase Unity Wtyczka edytora automatycznie konfiguruje projekt Xcode tak, aby przesyłał symbole.
Pakiet Unity SDK w wersji 8.6.1 lub nowszej od Crashlytics automatycznie zawiera raporty o awariach NDK, co pozwala aplikacji Crashlytics automatycznie zgłaszać Unity IL2CPP, na urządzeniach z Androidem. Aby jednak wyświetlić symbolizowane zrzuty stosu biblioteki natywnej w panelu Crashlytics, informacje o symbolach musisz przesłać na adres podczas kompilacji za pomocą interfejsu wiersza poleceń Firebase.
Aby skonfigurować przesyłanie symboli, postępuj zgodnie z instrukcjami zainstaluj interfejs wiersza poleceń Firebase.
Jeśli interfejs wiersza poleceń jest już zainstalowany, upewnij się, że został on już zainstalowany zaktualizować ją do najnowszej wersji.
Krok 4. Utwórz projekt i prześlij symbole
iOS+ (platforma Apple)
W oknie Build Settings (Ustawienia kompilacji) wyeksportuj swój projekt do obszaru roboczego Xcode.
Utwórz aplikację.
Na platformach Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode tak, aby wygenerował i przesyłał pliku symboli zgodnego z Crashlytics na serwery Firebase w przypadku każdej kompilacji.
Android
W oknie Ustawienia kompilacji wykonaj jedną z tych czynności:
wyeksportować go do projektu w Android Studio, aby skompilować projekt; lub
Utwórz pakiet APK bezpośrednio w edytorze Unity.
Przed rozpoczęciem budowania upewnij się, że pole wyboru Utwórz symbole.zip jest zaznaczone zaznaczono w oknie Ustawienia kompilacji.
Po zakończeniu kompilacji wygeneruj symbol 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ładowy identyfikator aplikacji Firebase na Androida:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/SYMBOLS: ścieżka do pliku symboli wygenerowanego przez metodę interfejs wiersza poleceń
Wyeksportowano do projektu Android Studio – PATH/TO/SYMBOLS to katalog
unityLibrary/symbols
, który jest tworzony w wyeksportowanym katalogu głównym projektu po skompilowaniu aplikacji. za pomocą Gradle lub Android Studio.Plik APK został utworzony bezpośrednio w Unity – PATH/TO/SYMBOLS to ścieżka skompresowanego pliku symboli wygenerowane 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 Polecenie interfejsu wiersza poleceń Firebase do generowania i przesyłania pliku symboli
Zgłoś Opis --generator=csym
Używa starszego generatora plików symboli cSYM zamiast domyślny generator Breakpada
Niezalecane. Zalecamy użycie wartości domyślnej Generator plików symboli Breakpad.
--generator=breakpad
Korzysta z generatora plików symboli Breakpad.
Pamiętaj, że domyślnym ustawieniem do generowania pliku symboli jest Breakpad. Używaj tej flagi tylko wtedy, gdy dodano
w konfiguracji kompilacji i chcesz ją zastąpić, aby użyć Zamiast nich jest dostępny Breakpad.symbolGenerator { csym() }
--dry-run
Generuje pliki symboli, ale ich nie przesyła
Ta flaga jest przydatna, gdy chcesz sprawdzić zawartość wysyłane pliki.
--debug
Zawiera dodatkowe informacje na potrzeby debugowania
Krok 5. Wymuś awarię testową, aby dokończyć konfigurację
Aby dokończyć konfigurację Crashlytics i zobaczyć początkowe dane w Panel Crashlytics konsoli Firebase, musisz wymusić test .
Znajdź istniejący
GameObject
i dodaj do niego następujący skrypt. Ten 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"); } } }
Po zakończeniu kompilacji skompiluj aplikację i prześlij informacje o symbolach.
iOS+: wtyczka Firebase Unity Editor automatycznie konfiguruje Projekt Xcode do przesłania pliku symboli.
Android: w przypadku aplikacji na Androida, które korzystają z IL2CPP, uruchom Polecenie Firebase CLI
crashlytics:symbols:upload
do przesłania pliku symboli.
Uruchom aplikację. Po uruchomieniu aplikacji obserwuj dziennik urządzenia i poczekaj na wyjątek od reguły
CrashlyticsTester
.iOS+: dzienniki w dolnym panelu Xcode.
Android: aby wyświetlić dzienniki, uruchom w terminalu to polecenie:
adb logcat
Otwórz panel Crashlytics w Firebase, aby wyświetlić awarię testową.
Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po 5 minutach. włącz rejestrowanie 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ć informacje wszystkie raporty i statystyki.
Dalsze kroki
- (Zalecane) W przypadku aplikacji na Androida, które używają IL2CPP, uzyskać pomoc w debugowaniu awarii spowodowanych przez błędy pamięci natywnej przez kolekcja Raporty GWP-ASan. Te błędy związane z pamięcią mogą być związane z uszkodzeniem pamięci w przez użytkowników, co jest główną przyczyną luk w zabezpieczeniach aplikacji. Aby skorzystać z tej funkcji debugowania, upewnij się, że aplikacja korzysta z najnowszego pakietu SDK Crashlytics dla platformy Unity (10.7.0 lub nowszej) i ma Jawne włączenie GWP-ASan (wymaga zmodyfikować plik manifestu aplikacji na Androida).
- Dostosowywanie konfiguracji raportów o awariach dodając raportowanie akceptacji, dzienniki, klucze i śledzenie błędów niekrytycznych.
- Zintegruj z usługą Google Play, aby możesz filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w Panel Crashlytics. Dzięki temu możesz lepiej skupić się na konkretnych kompilacjach w panelu.