Dostosowywanie raportów o awariach Firebase Crashlytics

W panelu Crashlytics możesz kliknąć problem i otrzymać szczegółowe w raporcie o zdarzeniach. Możesz dostosować te raporty, aby lepiej zrozumieć, co dzieje się w Twojej aplikacji i w jakich okolicznościach Crashlytics

  • Automatycznie pobieraj logi menu nawigacyjnego, jeśli aplikacja używa pakietu SDK Firebase dla Google Analytics. Logi te dają Ci wgląd w działań użytkownika, które doprowadziły do zdarzenia zebranego przez Crashlytics w Twojej aplikacji.

  • Wyłącz automatyczne zgłaszanie awarii oraz włączyć raportowanie dla użytkowników. Pamiętaj, że Crashlytics domyślnie zbiera raporty o awariach użytkowników 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 następnie użyć funkcji niestandardowe klucze 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 dla każdego zdarzenia (podkarta Klucze), a nawet filtrować dane zdarzeń 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, jeśli chodzi o parametr value, aby mógł zaakceptować dowolny obiekt podstawowy lub String. Oto przykłady:

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 do innej wartości. 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 wystąpienie CustomKeysAndValues do metodę instancji setCustomKeys:

Kotlin+KTX

W przypadku Kotlin istniejąca funkcja jest prostsza niż korzystanie z CustomKeysAndValues – kreator.

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 uzyskać więcej informacji na temat zdarzeń prowadzących do awarii, możesz dodać niestandardowe logi Crashlytics do Twojej aplikacji. Crashlytics wiąże logi z danymi o awariach i wyświetla je na stronie Crashlytics Konsola 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 w przypadku danej awarii. Crashlytics umożliwia anonimowe identyfikowanie użytkowników raporty o awariach.

Aby dodać identyfikatory użytkowników do raportów, przypisz każdemu użytkownikowi unikalny identyfikator w numeru identyfikacyjnego, tokena lub zahaszowanej wartości:

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

Jeśli po ustawieniu identyfikatora użytkownika trzeba będzie go usunąć, zresetuj wartość do pustym ciągiem znaków. Wyczyszczenie identyfikatora użytkownika nie spowoduje usunięcia istniejącego Rekordy Crashlytics. Jeśli musisz usunąć rekordy powiązane z użytkownikiem ID, skontaktuj się z zespołem pomocy Firebase.

(Tylko Android NDK) Dodawanie metadanych do raportów o awariach NDK

Opcjonalnie możesz umieścić w kodzie C++ nagłówek crashlytics.h, aby dodać metadanych do raportów o awariach NDK, takich jak klucze niestandardowe, dzienniki niestandardowe, identyfikatory użytkowników. Wszystkie te opcje są opisane na stronie tę stronę powyżej.

crashlytics.h jest dostępny jako biblioteka C++ tylko z nagłówkiem Repozytorium GitHub pakietu SDK Firebase na Androida.

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 Ci pomóc w debugowaniu awarii spowodowanych przez błędy pamięci natywnej przez zbieranie raportów GWP-ASan. Te błędy związane z pamięcią mogą być powiązane z: uszkodzenie pamięci w aplikacji, które jest główną przyczyną jej bezpieczeństwa; Luki w zabezpieczeniach.

  • Możesz wyświetlić te dane w nowej „zrzutach stosu pamięci” Tab. do szczegółów problemu Panel Crashytics.

  • Można też skorzystać z nowego „raportu GWP-ASan” sygnału i filtra, aby szybko wyświetlić wszystkich problemów z tymi danymi.

Raporty dotyczące pamięci GWP-ASan możesz otrzymywać, wyraźnie włącz GWP-ASan. w aplikacji i użyj pakietu SDK Crashlytics dla NDK 18.3.6 lub nowszego (Firebase BoM) wersji 31.3.0 lub nowszej). Konfigurację GWP-ASan możesz przetestować za pomocą przykładowy kod natywny znajdziesz w dokumentacji Androida.

Zgłaszanie wyjątków niekrytycznych

Oprócz automatycznego zgłaszania awarii aplikacji Crashlytics umożliwia też rejestrujesz niekrytyczne wyjątki i wysyłasz je do Ciebie przy następnej aplikacji. nowych funkcji.

Używaj metody recordException, aby rejestrować niekrytyczne wyjątki w kodzie catch bloków. 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, z których zwykle otrzymujesz informacje. z podziałem na wersje Androida i urządzenia sprzętowe.

Crashlytics przetwarza wyjątki w dedykowanym wątku w tle, aby zminimalizować wpływ na wydajność aplikacji. Ograniczanie sieci użytkowników ruch, Crashlytics rejestruje wyjątki razem i wysyła do nich przy następnym uruchomieniu aplikacji.

Pobierz logi menu nawigacyjnego

Logi menu nawigacyjnego pozwalają lepiej poznać interakcje użytkownika do których doprowadziło do awarii, błędu niekrytycznego lub błędu ANR. Takie logi mogą może być pomocna przy odtworzeniu i debugowaniu problemu.

Logi menu nawigacyjnego są generowane przez Google Analytics, więc aby je uzyskać, musisz Trzeba włącz Google Analytics. dla projektu Firebase dodaj pakiet SDK Firebase dla Google Analytics do Twojej aplikacji. Po spełnieniu tych wymagań logi menu nawigacyjnego są automatycznie tworzone dołączany do danych zdarzenia na karcie Logi podczas wyświetlania szczegółów zdarzenia. danego problemu.

Pakiet SDK Analytics automatycznie rejestruje zdarzenie screen_view który pozwala w dziennikach menu nawigacyjnego wyświetlać listę ekranów wyświetlonych przed awarii, niekrytycznego ani błędu ANR. Log menu nawigacyjnego screen_view zawiera element firebase_screen_class.

W logach menu nawigacyjnego znajdują się też: niestandardowych zdarzeń rejestrowanych ręcznie na , w tym dane parametrów zdarzenia. Te dane pomagają wyświetlić serię działań użytkownika, które doprowadziły do awarii, błędów niekrytycznych lub błędów ANR.

Pamiętaj, że możesz jak kontrolować zbieranie i wykorzystywanie danych Google Analytics, który zawiera dane umieszczane w dziennikach menu nawigacyjnego.

Włącz raportowanie akceptacji

Domyślnie Crashlytics automatycznie zbiera raporty o awariach dotyczące użytkowników aplikacji. Aby zapewnić użytkownikom większą kontrolę nad danymi, które wysyłają, możesz włączyć raportów, na które należy się włączyć, wyłączając automatyczne raportowanie i wysyłając dane tylko do Jeśli w kodzie wybierzesz opcję Crashlytics:

  1. W bloku application pliku AndroidManifest.xml dodaj tag meta-data, aby wyłączyć automatyczne zbieranie danych:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Włącz zbieranie danych dla wybranych użytkowników, wywołując dane Crashlytics zastępowania kolekcji w czasie działania. Wartość zastąpienia będzie powtarzana po uruchomieniu w aplikacji, aby Crashlytics mogła automatycznie zbierać raporty. Aby zrezygnować automatycznego zgłaszania awarii, podaj false jako wartość zastąpienia. Po ustawieniu do false, nowa wartość będzie stosowana dopiero przy następnym uruchomieniu 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 Twój zanonimizowany stos umożliwia śledzenie logów innych aplikacji Firebase i informację, czy problem jest jako część większego trendu. W przypadku wielu problemów Analiza awarii zapewnia nawet zasoby aby pomóc Ci w debugowaniu awarii.

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 Statystyki awarii u góry listy problemów w Crashlytics w konsoli Firebase.