W tym przewodniku opisano, jak dostosować raporty o awariach za pomocą pakietu SDK Firebase Crashlytics. Domyślnie Crashlytics automatycznie zbiera raporty o awariach dla wszystkich użytkowników Twojej aplikacji (możesz wyłączyć automatyczne raportowanie o awariach i zamiast tego włączyć opcjonalne raportowanie dla swoich użytkowników). Crashlytics udostępnia cztery standardowe mechanizmy rejestrowania: klucze niestandardowe , dzienniki niestandardowe , identyfikatory użytkowników i przechwycone wyjątki .
Dodaj niestandardowe klucze
Klucze niestandardowe pomagają uzyskać określony stan aplikacji prowadzący do awarii. Możesz powiązać dowolne pary klucz/wartość z raportami o awariach, a następnie użyć niestandardowych kluczy do wyszukiwania i filtrowania raportów o awariach w konsoli Firebase.
W panelu Crashlytics możesz wyszukiwać problemy pasujące do klucza niestandardowego.
Przeglądając konkretny problem w konsoli, możesz wyświetlić powiązane klucze niestandardowe dla każdego zdarzenia (karta podrzędna Klucze ), a nawet filtrować zdarzenia według kluczy niestandardowych (menu Filtruj u góry strony).
Użyj metody instancji setCustomKey
, aby ustawić pary klucz/wartość. Zauważ, że setCustomKey
jest przeciążony, aby parametr value
akceptował dowolny argument pierwotny lub String
. Oto kilka przykładów:
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
Możesz także zmodyfikować wartość istniejącego klucza, wywołując klucz i ustawiając go na inną wartość. Na przykład:
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
Masowo dodaj pary klucz/wartość, przekazując instancję klasy CustomKeysAndValues
do metody instancji setCustomKeys
:
Kotlin+KTX
W przypadku Kotlina istniejąca funkcjonalność jest prostsza niż użycie konstruktora CustomKeysAndValues
.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
Dodaj niestandardowe komunikaty dziennika
Aby zapewnić sobie lepszy kontekst dla zdarzeń prowadzących do awarii, możesz dodać do swojej aplikacji niestandardowe dzienniki Crashlytics. Crashlytics łączy dzienniki z danymi o awariach i wyświetla je na stronie Crashlytics w konsoli Firebase na karcie Dzienniki .
Użyj log
, aby zidentyfikować problemy. Na przykład:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Ustaw identyfikatory użytkowników
Aby zdiagnozować problem, często warto wiedzieć, który z użytkowników doświadczył danej awarii. Crashlytics umożliwia anonimową identyfikację użytkowników w raportach o awariach.
Aby dodać identyfikatory użytkowników do raportów, przypisz każdemu użytkownikowi unikalny identyfikator w postaci numeru identyfikacyjnego, tokena lub wartości zahaszowanej:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Jeśli kiedykolwiek będziesz musiał wyczyścić identyfikator użytkownika po jego ustawieniu, zresetuj wartość do pustego ciągu. Wyczyszczenie identyfikatora użytkownika nie powoduje usunięcia istniejących rekordów Crashlytics. Jeśli chcesz usunąć rekordy powiązane z identyfikatorem użytkownika, skontaktuj się z pomocą techniczną Firebase .
(Tylko Android NDK) Dodaj metadane do raportów o awariach NDK
Opcjonalnie możesz dołączyć nagłówek crashlytics.h
do kodu C++, aby dodać metadane do raportów o awariach NDK, takie jak niestandardowe klucze , niestandardowe dzienniki , identyfikatory użytkowników . Wszystkie te opcje są opisane na tej stronie powyżej.
crashlytics.h
jest dostępny jako biblioteka C++ zawierająca tylko nagłówki w repozytorium Firebase Android SDK GitHub .
Przeczytaj komentarze w pliku nagłówkowym, aby uzyskać instrukcje dotyczące korzystania z interfejsów API NDK C++.
Zgłaszaj wyjątki niekrytyczne
Oprócz automatycznego zgłaszania awarii aplikacji Crashlytics umożliwia rejestrowanie wyjątków niekrytycznych i wysyłanie ich do Ciebie przy następnym uruchomieniu aplikacji.
Użyj metody recordException
, aby rejestrować niekrytyczne wyjątki w blokach catch
aplikacji. Na przykład:
Kotlin+KTX
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
Wszystkie zarejestrowane wyjątki pojawiają się w konsoli Firebase jako problemy niekrytyczne. Podsumowanie problemu zawiera wszystkie informacje o stanie, które zwykle uzyskujesz w przypadku awarii, wraz z podziałem według wersji Androida i urządzenia.
Crashlytics przetwarza wyjątki w dedykowanym wątku działającym w tle, aby zminimalizować wpływ na wydajność Twojej aplikacji. Aby zmniejszyć ruch sieciowy użytkowników, Crashlytics grupuje zarejestrowane wyjątki i wysyła je przy następnym uruchomieniu aplikacji.
Włącz raportowanie zgody
Domyślnie Crashlytics automatycznie zbiera raporty o awariach dla wszystkich użytkowników Twojej aplikacji. Aby zapewnić użytkownikom większą kontrolę nad wysyłanymi przez nich danymi, możesz włączyć raportowanie zgody, wyłączając automatyczne raportowanie i wysyłając dane do Crashlytics tylko wtedy, gdy tak zdecydujesz w swoim kodzie:
W bloku
application
w plikuAndroidManifest.xml
dodaj tagmeta-data
, aby wyłączyć automatyczne zbieranie:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Włącz zbieranie danych dla wybranych użytkowników, wywołując funkcję zastępowania zbierania danych Crashlytics w czasie wykonywania. Wartość zastąpienia pozostaje niezmieniona po uruchomieniu Twojej aplikacji, dzięki czemu Crashlytics może automatycznie zbierać raporty. Aby zrezygnować z automatycznego zgłaszania awarii, podaj
false
jako wartość zastępującą. Gdy jest ustawiona nafalse
, nowa wartość nie ma zastosowania do następnego uruchomienia aplikacji.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Zarządzaj danymi Crash Insights
Crash Insights pomaga rozwiązywać problemy, porównując anonimowe ślady stosu ze śladami z innych aplikacji Firebase i informując, czy problem jest częścią większego trendu. W przypadku wielu problemów usługa Crash Insights zapewnia nawet zasoby ułatwiające debugowanie awarii.
Crash Insights wykorzystuje zagregowane dane o awariach do identyfikowania typowych trendów stabilności. Jeśli nie chcesz udostępniać danych swojej aplikacji, możesz zrezygnować z Crash Insights w menu Crash Insights u góry listy problemów Crashlytics w konsoli Firebase .