Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Dostosuj raporty o awariach Firebase Crashlytics

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

W tym przewodniku opisano, jak dostosować raporty o awariach za pomocą pakietu Firebase Crashlytics SDK. Domyślnie Crashlytics automatycznie zbiera raporty o awariach dla wszystkich użytkowników Twojej aplikacji (możesz zamiast tego wyłączyć automatyczne raportowanie o awariach i włączyć raportowanie dla swoich użytkowników). Crashlytics udostępnia od razu cztery mechanizmy rejestrowania: klucze niestandardowe , dzienniki niestandardowe , identyfikatory użytkowników i przechwycone wyjątki .

Dodaj niestandardowe klucze

Klucze niestandardowe pomagają uzyskać konkretny stan aplikacji, który może doprowadzić do awarii. Z raportami o awariach możesz powiązać dowolne pary klucz/wartość, a następnie użyć kluczy niestandardowych do wyszukiwania i filtrowania raportów o awariach w konsoli Firebase.

  • W panelu Crashlytics możesz wyszukiwać problemy pasujące do niestandardowego klucza.

  • Przeglądając konkretny problem w konsoli, możesz wyświetlić powiązane klucze niestandardowe dla każdego zdarzenia ( podkarta 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ść. Należy zauważyć, że setCustomKey jest przeciążony, aby parametr value mógł zaakceptować dowolny argument pierwotny lub String . Oto kilka przykładów:

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 */);

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
}

Możesz również zmodyfikować wartość istniejącego klucza, wywołując klucz i ustawiając go na inną wartość. Na przykład:

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

Kotlin+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

Dodaj zbiorczo pary klucz/wartość, przekazując instancję CustomKeysAndValues ​​do metody instancji setCustomKeys :

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);

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)
}

Dodaj niestandardowe komunikaty dziennika

Aby uzyskać więcej kontekstu dla zdarzeń prowadzących do awarii, możesz dodać do swojej aplikacji niestandardowe dzienniki Crashlytics. Crashlytics kojarzy 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:

Java

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

Kotlin+KTX

Firebase.crashlytics.log("message")

Ustaw identyfikatory użytkowników

Aby zdiagnozować problem, często warto wiedzieć, u którego z 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 ID, tokena lub wartości zaszyfrowanej:

Java

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

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Jeśli kiedykolwiek będziesz musiał wyczyścić identyfikator użytkownika po jego ustawieniu, zresetuj wartość do pustego ciągu. Usunięcie 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 logi , identyfikatory użytkowników . Wszystkie te opcje zostały 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łoś niekrytyczne wyjątki

Oprócz automatycznego zgłaszania awarii aplikacji Crashlytics umożliwia rejestrowanie niekrytycznych wyjątków 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:

Java

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

Kotlin+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.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 po awariach, wraz z podziałem według wersji Androida i urządzenia sprzętowego.

Crashlytics przetwarza wyjątki w dedykowanym wątku w tle, aby zminimalizować wpływ na wydajność aplikacji. Aby zmniejszyć ruch sieciowy użytkowników, Crashlytics grupuje razem rejestrowane 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, wyłączając automatyczne raportowanie i wysyłając dane do Crashlytics tylko wtedy, gdy zdecydujesz się w kodzie:

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

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Włącz zbieranie danych dla wybranych użytkowników, wywołując w czasie wykonywania funkcję zastępowania gromadzenia danych Crashlytics. Wartość zastąpienia utrzymuje się podczas uruchamiania aplikacji, dzięki czemu Crashlytics może automatycznie zbierać raporty. Aby zrezygnować z automatycznego raportowania o awariach, podaj wartość false jako wartość zastąpienia. Po ustawieniu na false nowa wartość nie ma zastosowania do następnego uruchomienia aplikacji.

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    Kotlin+KTX

    Firebase.crashlytics.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 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 aplikacji, możesz zrezygnować z Crash Insights w menu Crash Insights u góry listy problemów z Crashlytics w konsoli Firebase .