Di dasbor Crashlytics, Anda dapat mengklik masalah dan mendapatkan laporan peristiwa yang mendetail. Anda dapat menyesuaikan laporan tersebut untuk membantu lebih memahami situasi yang terjadi di aplikasi dan situasi seputar peristiwa yang dilaporkan ke Crashlytics.
Melengkapi aplikasi Anda untuk mencatat kunci kustom, pesan log kustom, dan ID pengguna.
Melaporkan pengecualian ke Crashlytics.
Mendapatkan log breadcrumb secara otomatis jika aplikasi Anda menggunakan Firebase SDK untuk Google Analytics. Log ini memberi Anda visibilitas terkait tindakan pengguna yang mengarah ke peristiwa yang dikumpulkan Crashlytics di aplikasi Anda.
Menonaktifkan pelaporan error otomatis dan mengaktifkan pelaporan keikutsertaan untuk pengguna. Perlu diperhatikan bahwa, secara default, Crashlytics otomatis mengumpulkan laporan error untuk semua pengguna aplikasi Anda.
Menambahkan kunci kustom
Kunci kustom membantu Anda mendapatkan status tertentu aplikasi menjelang error. Anda dapat mengaitkan key-value pair apa pun dengan laporan error, lalu menggunakan kunci kustom untuk menelusuri dan memfilter laporan error di Firebase console.
Di dasbor Crashlytics, Anda dapat mencari masalah yang cocok dengan kunci kustom.
Saat meninjau masalah tertentu di console, Anda dapat melihat kunci kustom yang dikaitkan untuk setiap peristiwa (subtab Keys) dan bahkan memfilter peristiwa berdasarkan kunci kustom (menu Filter di bagian atas halaman).
Gunakan metode instance setCustomKey
untuk menetapkan key-value pair. Perhatikan bahwa
setCustomKey
kelebihan beban pada parameter value
untuk menerima primitif atau argumen String
. Berikut beberapa contohnya:
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 */);
Anda juga dapat mengubah nilai kunci yang ada dengan memanggil kunci tersebut dan menetapkannya ke nilai yang berbeda. Contoh:
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");
Tambahkan beberapa key-value pair sekaligus dengan meneruskan instance CustomKeysAndValues
ke metode instance setCustomKeys
:
Kotlin+KTX
Untuk Kotlin, fungsionalitas yang ada lebih sederhana daripada menggunakan builder 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);
Menambahkan pesan log kustom
Untuk memberikan lebih banyak konteks mengenai peristiwa menjelang error, Anda dapat menambahkan log Crashlytics kustom ke aplikasi. Crashlytics mengaitkan log dengan data error dan menampilkannya di halaman Crashlytics di Firebase console, pada tab Logs.
Gunakan log
untuk membantu menentukan masalah. Contoh:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Menetapkan ID pengguna
Untuk mendiagnosis masalah, mengetahui pengguna mana yang mengalami error akan sangat membantu. Crashlytics menyertakan cara mengidentifikasi pengguna secara anonim dalam laporan error Anda.
Untuk menambahkan ID pengguna ke laporan, tetapkan ID unik untuk setiap pengguna dalam bentuk nomor ID, token, atau nilai hash:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Jika perlu menghapus ID pengguna setelah menetapkannya, reset nilainya ke string kosong. Menghapus ID pengguna tidak menghapus catatan Crashlytics yang ada. Jika ingin menghapus catatan yang terkait dengan ID pengguna, hubungi dukungan Firebase.
(Khusus Android NDK) Menambahkan metadata ke laporan error NDK
Secara opsional, Anda dapat menyertakan header crashlytics.h
dalam kode C++ untuk menambahkan metadata ke laporan error NDK, seperti kunci kustom, log kustom, ID pengguna. Semua opsi tersebut telah dijelaskan di atas pada halaman ini.
crashlytics.h
tersedia sebagai library C++ khusus header di Repositori GitHub Firebase Android SDK.
Baca komentar di file header untuk mendapatkan petunjuk cara menggunakan NDK C++ API.
Menyertakan laporan GWP-ASan untuk men-debug masalah kerusakan memori
Crashlytics dapat membantu Anda men-debug error yang disebabkan oleh error memori native dengan mengumpulkan laporan GWP-ASan. Error terkait memori ini dapat dikaitkan dengan kerusakan memori dalam aplikasi Anda, yang merupakan penyebab utama kerentanan keamanan aplikasi.
Anda dapat melihat data ini di tab "Pelacakan tumpukan memori" baru saat mengklik detail masalah di dasbor Crashlytics.
Anda juga dapat menggunakan sinyal dan laporan "Laporan GWP-ASan" baru untuk dengan cepat melihat semua masalah pada data ini.
Anda bisa mendapatkan laporan memori GWP-ASan jika mengaktifkan GWP-ASan secara eksplisit di aplikasi dan menggunakan Crashlytics SDK untuk NDK v18.3.6 dan yang lebih baru (Firebase BoM v31.3.0 dan yang lebih baru). Anda dapat menguji penyiapan GWP-ASan menggunakan contoh kode native dalam dokumentasi Android.
Melaporkan pengecualian non-fatal
Selain melaporkan error aplikasi secara otomatis, Crashlytics dapat Anda gunakan untuk mencatat pengecualian non-fatal dan mengirimkannya kepada Anda saat aplikasi diluncurkan pada kesempatan berikutnya.
Gunakan metode recordException
untuk mencatat pengecualian non-fatal di blok catch
aplikasi Anda. Contoh:
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 }
Semua pengecualian yang dicatat akan muncul sebagai masalah non-fatal di Firebase console. Ringkasan masalah berisi semua informasi status yang biasanya Anda dapatkan dari laporan error, bersama dengan perincian error berdasarkan versi Android dan perangkat hardware.
Crashlytics memproses pengecualian pada thread latar belakang khusus untuk meminimalkan dampak performa pada aplikasi Anda. Untuk mengurangi traffic jaringan pengguna, Crashlytics mengelompokkan pengecualian yang dicatat ke dalam log dan mengirimkannya saat aplikasi diluncurkan berikutnya.
Mendapatkan log breadcrumb
Log breadcrumb memberi Anda pemahaman yang lebih baik tentang interaksi yang dilakukan pengguna dengan aplikasi Anda yang mengarah ke peristiwa error, non-fatal, atau ANR. Log ini dapat bermanfaat saat mencoba mereproduksi dan men-debug masalah.
Log breadcrumb didukung oleh Google Analytics. Jadi, untuk mendapatkan log breadcrumb, Anda harus mengaktifkan Google Analytics untuk project Firebase dan menambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda. Setelah persyaratan ini terpenuhi, log breadcrumb akan otomatis disertakan dengan data peristiwa dalam tab Logs saat Anda melihat detail masalah.
Analytics SDK otomatis mencatat peristiwa screen_view
ke dalam log, sehingga log breadcrumb dapat menampilkan daftar layar yang dilihat sebelum peristiwa error, non-fatal, atau ANR. Log breadcrumb screen_view
berisi
parameter firebase_screen_class
.
Log breadcrumb juga diisi dengan setiap peristiwa kustom yang Anda catat secara manual dalam sesi pengguna, termasuk data parameter peristiwa. Data ini dapat membantu menunjukkan serangkaian tindakan pengguna yang mengarah ke peristiwa error, non-fatal, atau ANR.
Perhatikan bahwa Anda dapat mengontrol pengumpulan dan penggunaan data Google Analytics, yang mencakup data yang mengisi log breadcrumb.
Mengaktifkan pelaporan keikutsertaan
Secara default, Crashlytics otomatis mengumpulkan laporan error untuk semua pengguna aplikasi Anda. Untuk memberi pengguna kontrol lebih terhadap data yang mereka kirim, Anda dapat mengaktifkan pelaporan keikutsertaan dengan menonaktifkan pelaporan otomatis dan hanya mengirim data ke Crashlytics saat Anda ingin melakukannya dalam kode:
Pada blok
application
fileAndroidManifest.xml
, tambahkan tagmeta-data
untuk menonaktifkan pengumpulan otomatis:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Aktifkan pengumpulan untuk pengguna tertentu dengan memanggil penggantian pengumpulan data Crashlytics saat runtime. Nilai penggantian tetap ada setiap kali aplikasi diluncurkan, sehingga Crashlytics dapat otomatis mengumpulkan laporan. Untuk tidak diikutsertakan dalam pelaporan error otomatis, teruskan
false
sebagai nilai penggantian. Jika ditetapkan kefalse
, nilai baru tidak berlaku hingga kali berikutnya aplikasi dijalankan.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Mengelola data Crash Insights
Crash Insights membantu Anda mengatasi masalah dengan membandingkan pelacakan tumpukan anonim dengan trace dari aplikasi Firebase lain, serta memberitahukan apakah masalah Anda adalah bagian dari tren yang lebih besar. Untuk sebagian besar masalah, Crash Insights bahkan menyediakan resource untuk membantu Anda mendebug error.
Crash Insights menggunakan data error gabungan untuk mengidentifikasi tren stabilitas umum. Jika tidak ingin membagikan data aplikasi, Anda dapat menonaktifkan Crash Insights dari menu Crash Insights di bagian atas daftar masalah Crashlytics pada Firebase console.