Dostosowywanie raportów o awariach Firebase Crashlytics


W panelu Crashlytics możesz kliknąć problem i wyświetlić 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 otrzymuj logi ścieżki, jeśli Twoja aplikacja korzysta z pakietu SDK Firebase w 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 raportowanie awarii i włącz raportowanie z wyrażeniem zgody dla użytkowników. Pamiętaj, że domyślnie, Crashlytics automatycznie zbiera raporty o awariach dotyczące wszystkich użytkowników aplikacji.

Dodawanie kluczy niestandardowych

Klucze niestandardowe pomagają uzyskać konkretny stan aplikacji, który doprowadził do awarii. Możesz powiązać z raportami o awariach dowolne pary klucz-wartość, a następnie używać 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.

  • Podczas sprawdzania konkretnego problemu w konsoli możesz wyświetlić powiązane klucze niestandardowe dla każdego zdarzenia (podkarta Klucze) i nawet je filtrować według kluczy niestandardowych (menu Filtr u góry strony).

Do ustawiania par klucz-wartość użyj metody instancji setCustomKey. Pamiętaj, że funkcja setCustomKey jest przeciążona w przypadku parametru value, aby mogła przyjmować dowolny argument typu prymitywnego 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ż zmodyfikować wartość istniejącego klucza, wywołując go i ustawiając 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 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);

Dodawanie niestandardowych komunikatów z logów

Aby uzyskać więcej informacji o zdarzeniach prowadzących do awarii, możesz dodać do aplikacji niestandardowe dzienniki Crashlytics. Crashlytics łączy dzienniki z danymi o awarii i wyświetla je na stronie Crashlyticskonsoli Firebase na karcie Dzienniki.

Aby określić problemy, użyj log. Przykład:

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

FirebaseCrashlytics.getInstance().log("message");

Ustawianie identyfikatorów użytkowników

Aby zdiagnozować problem, często warto wiedzieć, którzy użytkownicy doświadczyli danego błędu. 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 identyfikatora, 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 powoduje usunięcia istniejących rekordów Crashlytics. Jeśli chcesz usunąć rekordy powiązane z identyfikatorem użytkownika, skontaktuj się z zespołem pomocy Firebase.

(dotyczy tylko NDK na Androida) Dodawanie metadanych do raportów o awariach w NDK

Opcjonalnie możesz dodać nagłówek crashlytics.h w kodzie C++, aby dodać metadane do raportów o awariach NDK, takie jak klucze niestandardowe, logi niestandardowe czy identyfikatory użytkownika. Wszystkie te opcje są opisane na tej stronie powyżej.

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

Więcej informacji o używaniu interfejsów NDK C++ znajdziesz w komentarzach w pliku nagłówka.

Dołącz raporty GWP-ASan, aby debugować problemy z uszkodzoną pamięcią

Crashlytics może pomóc w debugowaniu awarii spowodowanych błędami pamięci natywnej przez zbieranie raportów 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ą podatności na luki w zabezpieczeniach.

  • Te dane możesz wyświetlić na nowej karcie „Ścieżki sterowania pamięci”, która pojawi się po kliknięciu szczegółów problemu na Crashlytics panelu.

  • Możesz też użyć nowego sygnału i filtra „Raport GWP-ASan”, aby szybko wyświetlić wszystkie problemy z tymi danymi.

Raporty GWP-ASan możesz otrzymywać, jeśli w swojej aplikacji włączysz GWP-ASan i użyjesz pakietu SDK Crashlytics dla NDK w wersji 18.3.6 lub nowszej (Firebase BoM w wersji 31.3.0 lub nowszej). Konfigurację GWP-ASan możesz przetestować, korzystając z przykładowego kodu natywnego w dokumentacji Androida.

Zgłaszanie wyjątków niekrytycznych

Oprócz automatycznego zgłaszania awarii aplikacji Crashlytics umożliwia rejestrowanie niekrytycznych wyjątków i przesyłanie ich do Ciebie przy następnym uruchomieniu aplikacji.

Używaj metody recordException, aby rejestrować niekrytyczne wyjątki w kodzie catch blokady. 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ą widoczne w konsoli Firebase jako błędy niekrytyczne. Podsumowanie problemu zawiera wszystkie informacje o stanie, które zwykle otrzymujesz z wypadków, wraz z podziałem według wersji Androida i urządzenia.

Crashlytics przetwarza wyjątki w dedykowanym wątku w tle w zminimalizować wpływ na wydajność aplikacji. Ograniczanie sieci użytkowników ruchu, Crashlytics grupa zarejestrowała 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, wystąpienia błędu niekrytycznego lub błędu ANR. Te logi mogą być przydatne podczas próby odtworzenia i debugowania problemu.

Logi ścieżki są obsługiwane przez Google Analytics, więc aby je uzyskać, musisz włączyć Google Analytics w projekcie Firebase i dodać do aplikacji pakiet SDK Firebase dla Google Analytics. Gdy spełnisz te wymagania, ścieżki będą automatycznie uwzględniane w danych zdarzenia na karcie Logi, gdy wyświetlisz szczegóły 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 mogą pomóc w określeniu sekwencji działań użytkownika, które doprowadziły do awarii, niekrytycznego błędu lub błędu ANR.

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

Włączanie raportowania zgody

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

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

    <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 pozostanie bez zmian po uruchomieniu Twojej aplikacji, aby usługa 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 z 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 Crashlytics w konsoli Firebase.