| Wybierz platformę: | iOS+ Android Flutter Unity |
Na panelu Crashlytics możesz kliknąć problem i uzyskać szczegółowy raport o zdarzeniu. Możesz dostosowywać te raporty, aby lepiej rozumieć, co się dzieje w Twojej aplikacji, oraz okoliczności zdarzeń zgłaszanych do Crashlytics.
Zinstrumentuj aplikację, aby rejestrować klucze niestandardowe, niestandardowe komunikaty logu i identyfikatory użytkowników.
Zgłaszaj wyjątki do Crashlytics.
Automatyczne uzyskiwanie logów ścieżki, jeśli aplikacja korzysta z pakietu SDK Firebase na potrzeby Google Analytics. Logi te zapewniają wgląd w działania użytkowników, które doprowadziły do zdarzenia zebranego przez Crashlytics w Twojej aplikacji.
Wyłącz automatyczne raportowanie awarii i włącz raportowanie za zgodą użytkowników. Pamiętaj, że domyślnie Crashlytics automatycznie zbiera raporty o awariach od wszystkich użytkowników Twojej aplikacji.
Dodawanie kluczy niestandardowych
Klucze niestandardowe pomagają uzyskać konkretny stan aplikacji przed awarią. Możesz powiązać dowolne pary klucz-wartość z raportami o awariach, a następnie używać kluczy niestandardowych do wyszukiwania i filtrowania raportów o awariach w Firebasekonsoli.
W Crashlyticspanelu możesz wyszukiwać problemy pasujące do niestandardowego klucza.
Podczas sprawdzania konkretnego problemu w konsoli możesz wyświetlić powiązane klucze niestandardowe dla każdego zdarzenia (karta Klucze), a nawet filtrować zdarzenia według kluczy niestandardowych (menu Filtr u góry strony).
Do ustawiania par klucz-wartość używaj metody instancji setCustomKey. Zwróć uwagę, że operator
setCustomKey jest przeciążony dla parametru value, aby akceptować dowolny argument typu prostego lub String. Oto przykłady:
Kotlin
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
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");
Pary klucz-wartość możesz dodawać zbiorczo, przekazując instancję CustomKeysAndValues do metody instancji setCustomKeys:
Kotlin
W przypadku języka Kotlin istniejąca funkcja jest prostsza niż używanie CustomKeysAndValueskonstruktora.
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 wiadomości w logu
Aby uzyskać więcej informacji o zdarzeniach, które doprowadziły do awarii, możesz dodać do aplikacji niestandardowe logi Crashlytics. Crashlytics kojarzy logi z danymi o awarii i wyświetla je na stronie Crashlytics w Firebase konsoli na karcie Logi.
Użyj log, aby zidentyfikować problemy. Przykład:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Ustawianie identyfikatorów użytkowników
Aby zdiagnozować problem, często przydatne jest sprawdzenie, u których użytkowników wystąpił dany błąd. Crashlytics – umożliwia anonimową identyfikację użytkowników w raportach o awariach.
Aby dodać do raportów identyfikatory użytkowników, przypisz każdemu użytkownikowi unikalny identyfikator w postaci numeru identyfikacyjnego, tokena lub wartości skrótu:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Jeśli po ustawieniu identyfikatora użytkownika chcesz go wyczyścić, zresetuj wartość do pustego ciągu 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.
(Tylko Android NDK) Dodawanie metadanych do raportów o awariach NDK
Opcjonalnie możesz dodać nagłówek crashlytics.h do kodu C++, aby dodać metadane do raportów o awariach NDK, takie jak klucze niestandardowe, niestandardowe logi i identyfikatory użytkowników. Wszystkie te opcje zostały opisane powyżej na tej stronie.
crashlytics.h jest dostępna jako biblioteka C++ zawierająca tylko pliki nagłówkowe w repozytorium GitHub pakietu SDK Firebase na Androida.
Instrukcje korzystania z interfejsów NDK C++ API znajdziesz w komentarzach w pliku nagłówkowym.
uwzględniać raporty GWP-ASan do debugowania problemów z uszkodzeniem pamięci;
Crashlytics może pomóc Ci debugować awarie spowodowane błędami pamięci natywnej, zbierając raporty GWP-ASan. Te błędy związane z pamięcią mogą być powiązane z uszkodzeniem zawartości pamięci w aplikacji, co jest główną przyczyną luk w zabezpieczeniach aplikacji.
Te dane możesz wyświetlić na nowej karcie „Ślady stosu pamięci”, gdy klikniesz szczegóły problemu na Crashlyticspanelu.
Możesz też użyć nowego sygnału „Raport GWP-ASan” i filtra, aby szybko wyświetlić wszystkie problemy z tymi danymi.
Raporty pamięci GWP-ASan możesz uzyskać, jeśli wyraźnie włączysz GWP-ASan w aplikacji i użyjesz Crashlytics pakietu SDK dla NDK w wersji 18.3.6 lub nowszej (Firebase BoMw wersji 31.3.0 lub nowszej). Konfigurację GWP-ASan możesz przetestować, korzystając z przykładowego kodu natywnego w dokumentacji Androida.
Zgłaszanie błędó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żyj metody recordException, aby rejestrować w blokach catch aplikacji wyjątki niekrytyczne. Przykład:
Kotlin
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 }
Możesz też dołączyć niestandardowe klucze do konkretnego wyjątku niekrytycznego. Przykład:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // 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 osobnym wątku w tle, aby zminimalizować wpływ na wydajność aplikacji. Aby zmniejszyć ruch sieciowy użytkowników, Crashlytics grupuje zarejestrowane wyjątki i wysyła je przy następnym uruchomieniu aplikacji.
Pobieranie dzienników elementów menu nawigacyjnego
Dzięki dziennikom ścieżki możesz lepiej poznać interakcje użytkownika z aplikacją, które doprowadziły do awarii, błędu niekrytycznego lub błędu ANR. Te dzienniki mogą być przydatne podczas odtwarzania i debugowania problemu.
Dzienniki ścieżki są obsługiwane przez Google Analytics, więc aby uzyskać dzienniki ścieżki, musisz włączyć Google Analytics w projekcie w Firebase i dodać do aplikacji [pakiet] SDK Firebase na platformę Google Analytics. Gdy spełnisz te wymagania, dzienniki ścieżki będą automatycznie dołączane do danych zdarzenia na karcie Dzienniki, gdy wyświetlasz szczegóły problemu.
Pakiet SDK Analyticsautomatycznie rejestruje screen_view zdarzenie, dzięki czemu logi ścieżki mogą wyświetlać listę ekranów wyświetlonych przed awarią, zdarzeniem niekrytycznym lub zdarzeniem ANR. Log ścieżki screen_view zawiera parametr firebase_screen_class.
Dzienniki ścieżki są też wypełniane zdarzeniami niestandardowymi, które rejestrujesz ręcznie w sesji użytkownika, w tym danymi parametrów zdarzenia. Te dane mogą pokazywać serię działań użytkownika, które doprowadziły do awarii, błędu niekrytycznego lub błędu ANR.
Pamiętaj, że możesz kontrolować zbieranie i wykorzystywanie danych Google Analytics, w tym danych, które wypełniają logi ścieżki.
Włącz raportowanie na podstawie zgody użytkowników
Domyślnie Crashlytics automatycznie zbiera raporty o awariach wszystkich użytkowników Twojej aplikacji. Aby dać użytkownikom większą kontrolę nad wysyłanymi danymi, możesz włączyć raportowanie z możliwością rezygnacji. W tym celu wyłącz automatyczne raportowanie i wysyłaj dane do Crashlytics tylko wtedy, gdy zdecydujesz się na to w kodzie.
W bloku
applicationplikuAndroidManifest.xmldodaj tagmeta-data, aby wyłączyć automatyczne zbieranie danych:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />Włącz zbieranie danych w przypadku wybranych użytkowników, wywołując w czasie działania programu zastąpienie zbierania danych Crashlytics. Wartość zastąpienia jest zachowywana we wszystkich kolejnych uruchomieniach aplikacji, dzięki czemu Crashlytics może automatycznie zbierać raporty dotyczące tego użytkownika.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Jeśli użytkownik później zrezygnuje ze zbierania danych, możesz przekazać wartość zastępczą
false. Zostanie ona zastosowana przy następnym uruchomieniu aplikacji przez użytkownika i będzie obowiązywać przy wszystkich kolejnych uruchomieniach.
Zarządzanie danymi Crash Insights
Analiza awarii pomaga rozwiązywać problemy, porównując zanonimizowane zrzuty stosu z zrzutami z innych aplikacji Firebase i informując, czy problem jest częścią większego trendu. W przypadku wielu problemów statystyki awarii zawierają nawet zasoby, które pomagają w debugowaniu awarii.
Crash Insights korzysta z zagregowanych danych o awariach, aby identyfikować typowe trendy dotyczące stabilności. Jeśli nie chcesz udostępniać danych aplikacji, możesz zrezygnować z Crash Insights w menu Crash Insights u góry Crashlytics listy problemów w Firebase konsoli.
Dalsze kroki
- Eksportuj dane do BigQuery lub Cloud Logging, aby korzystać z zaawansowanych analiz i funkcji, takich jak wysyłanie zapytań dotyczących danych, tworzenie niestandardowych paneli i konfigurowanie niestandardowych alertów.