| Wybierz platformę: | iOS+ Android Flutter Unity |
Możesz kliknąć problem i uzyskać szczegółowy raport o zdarzeniu w panelu DevOps i zaangażowanie > Crashlytics w konsoli Firebase. Możesz dostosowywać te raporty, aby lepiej rozumieć, co się dzieje w Twojej aplikacji, i okoliczności zdarzeń zgłaszanych do Crashlytics.
Zaimplementuj w aplikacji rejestrowanie niestandardowych kluczy, niestandardowych komunikatów logu i identyfikatorów użytkowników.
Zgłaszaj wyjątki do Crashlytics.
Automatyczne uzyskiwanie logów ścieżki, jeśli aplikacja korzysta z pakietu SDK Firebase na Google Analytics. Logi te zapewniają wgląd w działania użytkowników prowadzące 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 wszystkich użytkowników Twojej aplikacji.
Dodawanie kluczy niestandardowych
Klucze niestandardowe pomagają uzyskać informacje o stanie aplikacji przed awarią. Z raportami o awariach możesz powiązać dowolne pary klucz-wartość, a potem używać kluczy niestandardowych do wyszukiwania i filtrowania raportów o awariach na panelu DevOps i zaangażowanie > Crashlytics w Firebase konsoli.
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 (karta Klucze), a nawet filtrować zdarzenia według kluczy niestandardowych (menu Filtruj u góry strony).
Do ustawiania par klucz-wartość używaj metody instancji setCustomKey. Zwróć uwagę, że symbol
setCustomKey jest przeciążony w przypadku 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");
Dodaj pary klucz-wartość zbiorczo, przekazując instancję CustomKeysAndValues do metody instancji setCustomKeys:
Kotlin
W przypadku języka Kotlin istniejąca funkcja jest prostsza niż używanie narzędzia do tworzenia 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);
Dodawanie niestandardowych wiadomości w logach
Aby uzyskać więcej informacji o zdarzeniach poprzedzających awarię, możesz dodać do aplikacji niestandardowe Crashlyticsdzienniki. Crashlyticspowiąże dzienniki z danymi o awarii i wyświetli je na karcie Dzienniki, gdy będziesz przeglądać szczegóły problemu (wszystkie problemy znajdziesz na panelu DevOps i zaangażowanie > Crashlytics w konsoli Firebase).
Użyj log, aby pomóc w określeniu problemów. 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ło dane awaryjne zamknięcie aplikacji. 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 zaszyfrowanej wartości:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Jeśli po ustawieniu identyfikatora użytkownika chcesz go usunąć, zresetuj jego 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 uwzględnić w kodzie C++ nagłówek crashlytics.h, aby dodać do raportów o awariach NDK metadane, 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++ tylko z plikami nagłówkowymi w repozytorium pakietu SDK Firebase na Androida na GitHubie.
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 pamięci w aplikacji, co jest główną przyczyną luk w zabezpieczeniach aplikacji.
W panelu Crashlytics DevOps i zaangażowanie w konsoli Firebase możesz wykonywać te czynności:
Te dane możesz wyświetlić na nowej karcie „Zrzuty stosu pamięci”, gdy klikniesz szczegóły problemu.
Możesz użyć nowego sygnału „Raport GWP-ASan” i filtra, aby szybko wyświetlić wszystkie problemy z tymi danymi.
Raporty o 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 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 błędów niekrytycznych
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ć 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 jako niekrytyczne problemy w sekcji DevOps i zaangażowanie > Crashlytics panel w konsoli Firebase. 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
Dzienniki ścieżki pozwalają lepiej zrozumieć interakcje użytkownika z aplikacją, które doprowadziły do awarii, błędu niekrytycznego lub błędu ANR. Dzienniki te mogą być przydatne podczas odtwarzania i debugowania problemu.
Dzienniki ścieżki są obsługiwane przez Google Analytics, więc aby uzyskać logi działań użytkownika, musisz włączyć Google Analytics w projekcie w Firebase i dodać do aplikacji [pakiet] SDK Firebase na Google Analytics. Gdy spełnisz te wymagania, logi działań użytkownika będą automatycznie dołączane do danych zdarzenia na karcie Dzienniki, gdy wyświetlasz szczegóły problemu (wszystkie problemy znajdziesz na panelu DevOps i zaangażowanie > Crashlytics w konsoli Firebase).
Pakiet SDK Analyticsautomatycznie rejestruje screen_viewzdarzenie, co umożliwia wyświetlanie w logach ścieżki listy ekranów wyświetlonych przed awarią, błędem niekrytycznym lub zdarzeniem ANR. Dziennik ś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 Crashlytics data collection. 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
Crash Insights 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 udostępniają nawet zasoby, które pomagają w debugowaniu awarii.
Crash Insights używa zagregowanych danych o awariach do identyfikowania typowych trendów dotyczących 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 na panelu DevOps i zaangażowanie > Crashlytics w konsoli Firebase.
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.