W panelu Crashlytics możesz kliknąć problem i uzyskać szczegółowy raport o zdarzeniach. Możesz dostosować te raporty, aby lepiej zrozumieć, co dzieje się w Twojej aplikacji i okoliczności związanych ze zdarzeniami zgłoszonymi do Crashlytics.
Dostosuj aplikację do rejestrowania kluczy niestandardowych, niestandardowych komunikatów logu i identyfikatorów użytkowników.
Zgłaszaj wyjątki do Crashlytics.
Jeśli Twoja aplikacja korzysta z pakietu SDK Firebase dla Google Analytics, automatycznie pobieraj logi menu nawigacyjnego. Logi te dają wgląd w działania użytkowników, które doprowadziły do zdarzenia zebranego przez Crashlytics w Twojej aplikacji.
Wyłącz automatyczne zgłaszanie awarii i włącz raportowanie dla użytkowników. Pamiętaj, że Crashlytics domyślnie zbiera automatycznie raporty o awariach dotyczące wszystkich użytkowników Twojej aplikacji.
Dodaj klucze niestandardowe
Klucze niestandardowe pomagają uzyskać konkretny stan aplikacji, który doprowadził do awarii. Dowolne pary klucz-wartość możesz powiązać z raportami o awariach, a potem używać kluczy niestandardowych do wyszukiwania i filtrowania raportów o awariach w konsoli Firebase.
W panelu Crashytics możesz wyszukiwać problemy pasujące do klucza niestandardowego.
Podczas sprawdzania konkretnego problemu w konsoli możesz wyświetlić powiązane klucze niestandardowe powiązane z każdym zdarzeniem (podkarta Klucze), a nawet przefiltrować zdarzenia według kluczy niestandardowych (menu Filtr u góry strony).
Do ustawiania par klucz-wartość użyj metody instancji setCustomKey
. Pamiętaj, że parametr setCustomKey
jest przeciążony w przypadku parametru value
, aby mógł akceptować dowolny argument podstawowy 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 też zmienić wartość istniejącego klucza, wywołując go i ustawiając dla niego inną wartość. 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");
Dodaj zbiorczo pary klucz-wartość, przekazując instancję CustomKeysAndValues
do metody instancji setCustomKeys
:
Kotlin+KTX
W przypadku Kotlin istniejąca funkcja jest prostsza niż korzystanie z kreatora 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 logu
Aby zapewnić sobie szerszy kontekst dla zdarzeń prowadzących do awarii, możesz dodać do aplikacji niestandardowe logi Crashlytics. Crashlytics powiąże dzienniki z danymi awarii i wyświetli je na stronie Crashlytics w konsoli Firebase na karcie Logi.
Aby wskazać problemy, użyj funkcji log
. Przykład:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Ustawianie identyfikatorów użytkowników
Przy diagnozowaniu problemu często warto wiedzieć, u których użytkowników wystąpiła dana awaria. Crashlytics umożliwia anonimowe identyfikowanie 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 zaszyfrowanej wartości:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Jeśli musisz usunąć identyfikator użytkownika po jego ustawieniu, zresetuj wartość do pustego ciągu znaków. Wyczyszczenie identyfikatora użytkownika nie spowoduje usunięcia istniejących rekordów Crashlytics. Jeśli chcesz usunąć rekordy powiązane z identyfikatorem User-ID, skontaktuj się z zespołem pomocy Firebase.
(Tylko Android NDK) Dodawanie metadanych do raportów o awariach NDK
Opcjonalnie możesz dodać do kodu C++ nagłówek crashlytics.h
, aby dodać metadane do raportów o awariach NDK, takie jak klucze niestandardowe, dzienniki niestandardowe czy identyfikatory użytkowników. Wszystkie te opcje opisujemy
na tej stronie powyżej.
Usługa crashlytics.h
jest dostępna jako biblioteka C++ z samym nagłówkiem w repozytorium Firebase SDK na Androida na GitHubie.
Przeczytaj komentarze w pliku nagłówkowym, aby dowiedzieć się, jak używać interfejsów API NDK w C++.
Dołącz raporty GWP-ASan, aby debugować problemy z uszkodzeniem pamięci
Crashlytics może pomóc w debugowaniu awarii spowodowanych przez błędy pamięci natywnej, tworząc 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.
Możesz wyświetlić te dane na nowej karcie „Zrzuty stosu pamięci”, gdy klikniesz szczegóły problemu w panelu Crashytics.
Możesz też użyć nowego sygnału i filtra „Raport GWP-ASan”, aby szybko wyświetlić wszystkie problemy związane z tymi danymi.
Aby otrzymywać raporty dotyczące pamięci GWP-ASan, włącz GWP-ASan w swojej aplikacji i użyjesz pakietu SDK Crashlytics dla NDK w wersji 18.3.6 lub nowszej (Firebase BoM w wersji 31.3.0 lub nowszej). Możesz przetestować konfigurację GWP-ASan, korzystając z przykładowego kodu natywnego w dokumentacji Androida.
Zgłaszanie wyjątków niekrytycznych
Crashlytics pozwala nie tylko automatycznie zgłaszać awarie aplikacji, ale też rejestrować niekrytyczne wyjątki i wysyłać je przy następnym uruchomieniu aplikacji.
Aby rejestrować wyjątki niekrytyczne w blokadach catch
Twojej aplikacji, użyj metody recordException
. 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 są wyświetlane w konsoli Firebase jako problemy niekrytyczne. Podsumowanie problemu zawiera wszystkie informacje o stanie, które zwykle otrzymujesz w przypadku awarii, a także podział według wersji Androida i urządzenia.
Crashlytics przetwarza wyjątki w specjalnym wątku w tle, aby zminimalizować wpływ na wydajność aplikacji. Aby ograniczyć ruch w sieci użytkowników, Crashlytics zbiorczo loguje wyjątki i wysyła je przy następnym uruchomieniu aplikacji.
Pobierz logi menu nawigacyjnego
Logi menu nawigacyjnego pozwalają lepiej poznać interakcje użytkownika z aplikacją, które doprowadziły do awarii, błędów niekrytycznych lub błędów ANR. Logi te mogą być pomocne przy odtworzeniu i debugowaniu problemu.
Logi menu nawigacyjnego są obsługiwane przez Google Analytics, więc aby uzyskać dostęp do logów menu nawigacyjnego, musisz włączyć Google Analytics w swoim projekcie Firebase i dodać pakiet SDK Firebase dla Google Analytics do swojej aplikacji. Po spełnieniu tych wymagań dzienniki menu nawigacyjnego są automatycznie dołączane do danych zdarzenia na karcie Logi, gdy wyświetlasz szczegóły problemu.
Pakiet Analytics SDK automatycznie rejestruje zdarzenie screen_view
, które włącza w dziennikach menu nawigacyjnego wyświetlanie listy ekranów wyświetlonych przed awarią, zdarzeniem niekrytycznym lub zdarzeniem ANR. Dziennik menu nawigacyjnego screen_view
zawiera parametr firebase_screen_class
.
Logi menu nawigacyjnego zawierają też zdarzenia niestandardowe zarejestrowane ręcznie w sesji użytkownika, w tym dane parametrów zdarzeń. Te dane ułatwiają ukazanie serii działań użytkowników, które prowadzą do awarii, zdarzeń niekrytycznych lub błędów ANR.
Pamiętaj, że możesz kontrolować zbieranie i wykorzystywanie danych Google Analytics, które obejmują dane umieszczane w logach menu nawigacyjnego.
Włącz raportowanie akceptacji
Domyślnie Crashlytics automatycznie zbiera raporty o awariach dotyczące wszystkich użytkowników aplikacji. Aby dać użytkownikom większą kontrolę nad danymi, które wysyłają, możesz włączyć raportowanie, wyłączając automatyczne raportowanie i wysyłając dane do Crashlytics tylko wtedy, gdy na to zdecydujesz się w kodzie:
W bloku
application
plikuAndroidManifest.xml
dodaj tagmeta-data
, aby wyłączyć automatyczne zbieranie danych:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Włącz zbieranie danych dla wybranych użytkowników, wywołując zastępowanie zbierania danych Crashlytics w czasie działania. Wartość zastąpienia pozostanie bez zmian po każdym uruchomieniu aplikacji, więc Crashlytics może automatycznie zbierać raporty. Aby zrezygnować z automatycznego zgłaszania awarii, podaj
false
jako wartość zastąpienia. Jeśli ustawisz wartośćfalse
, nowa wartość będzie stosowana do czasu następnego uruchomienia aplikacji.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Zarządzanie danymi analizy awarii
Statystyki awarii pomagają rozwiązywać problemy, porównując zanonimizowane ślady stosu ze śladami z innych aplikacji Firebase, aby poinformować Cię, czy Twój problem jest częścią większego trendu. W przypadku wielu problemów narzędzie Analiza awarii udostępnia nawet zasoby, które pomogą Ci je debugować.
Statystyki awarii wykorzystują zbiorcze dane o awariach, aby identyfikować typowe trendy dotyczące stabilności. Jeśli nie chcesz udostępniać danych o aplikacji, możesz zrezygnować ze Statystyk awarii w menu Analiza awarii u góry listy problemów Crashlytics w konsoli Firebase.