Panduan ini menjelaskan cara menyesuaikan laporan kerusakan menggunakan Firebase Crashlytics SDK. Secara default, Crashlytics secara otomatis mengumpulkan laporan kerusakan untuk semua pengguna aplikasi Anda (sebagai gantinya, Anda dapat menonaktifkan pelaporan kerusakan otomatis dan mengaktifkan pelaporan keikutsertaan untuk pengguna Anda). Crashlytics menyediakan empat mekanisme pembuatan log secara langsung: kunci khusus , log khusus , pengidentifikasi pengguna , dan pengecualian yang tertangkap .
Tambahkan kunci khusus
Kunci khusus membantu Anda mendapatkan status spesifik aplikasi Anda yang mengarah ke kerusakan. Anda dapat mengaitkan pasangan kunci/nilai arbitrer dengan laporan kerusakan, lalu menggunakan kunci khusus untuk menelusuri dan memfilter laporan kerusakan di Firebase console.
Di dasbor Crashlytics , Anda dapat mencari masalah yang cocok dengan kunci khusus.
Saat meninjau masalah tertentu di konsol, Anda dapat melihat kunci kustom terkait untuk setiap peristiwa (subtab Kunci ) dan bahkan memfilter peristiwa dengan kunci kustom (menu Filter di bagian atas halaman).
Gunakan metode instan setCustomKey
untuk menetapkan pasangan kunci/nilai. Perhatikan bahwa setCustomKey
kelebihan muatan untuk parameter value
untuk menerima argumen primitif atau String
apa pun. 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 dan menyetelnya ke nilai yang berbeda. Sebagai 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 pasangan kunci/nilai secara massal dengan meneruskan instance CustomKeysAndValues
ke metode instance setCustomKeys
:
Kotlin+KTX
Untuk Kotlin, fungsionalitas yang ada lebih sederhana daripada menggunakan pembuat 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);
Tambahkan pesan log kustom
Untuk memberi Anda lebih banyak konteks untuk peristiwa yang mengarah ke crash, Anda dapat menambahkan log Crashlytics kustom ke aplikasi Anda. Crashlytics mengaitkan log dengan data kerusakan Anda dan menampilkannya di halaman Crashlytics di konsol Firebase , di bawah tab Log .
Gunakan log
untuk membantu menemukan masalah. Sebagai contoh:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Tetapkan pengidentifikasi pengguna
Untuk mendiagnosis masalah, mengetahui pengguna mana yang mengalami error tertentu sering kali membantu. Crashlytics menyertakan cara untuk mengidentifikasi pengguna secara anonim dalam laporan kerusakan Anda.
Untuk menambahkan ID pengguna ke laporan Anda, berikan pengenal unik kepada setiap pengguna dalam bentuk nomor ID, token, atau nilai hash:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Jika Anda perlu menghapus pengidentifikasi pengguna setelah menyetelnya, setel ulang nilainya menjadi string kosong. Menghapus ID pengguna tidak menghapus catatan Crashlytics yang ada. Jika Anda perlu menghapus rekaman yang terkait dengan ID pengguna, hubungi dukungan Firebase .
(khusus Android NDK) Menambahkan metadata ke laporan kerusakan NDK
Secara opsional, Anda dapat menyertakan tajuk crashlytics.h
dalam kode C++ untuk menambahkan metadata ke laporan kerusakan NDK, seperti kunci khusus , log khusus , pengidentifikasi pengguna . Semua opsi ini dijelaskan di halaman ini di atas.
crashlytics.h
tersedia sebagai library C++ khusus header di Firebase Android SDK GitHub Repository .
Baca komentar di file header untuk petunjuk penggunaan NDK C++ API.
Laporkan pengecualian non-fatal
Selain melaporkan kerusakan aplikasi Anda secara otomatis, Crashlytics memungkinkan Anda mencatat pengecualian non-fatal dan mengirimkannya kepada Anda saat aplikasi Anda diluncurkan lagi.
Gunakan metode recordException
untuk mencatat pengecualian non-fatal di blok catch
aplikasi Anda. Sebagai 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 tercatat muncul sebagai masalah non-fatal di Firebase console. Ringkasan masalah berisi semua informasi status yang biasanya Anda dapatkan dari kerusakan, bersama dengan kerusakan menurut versi Android dan perangkat keras.
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 lagi.
Aktifkan pelaporan keikutsertaan
Secara default, Crashlytics secara otomatis mengumpulkan laporan kerusakan untuk semua pengguna aplikasi Anda. Untuk memberi pengguna lebih banyak kontrol atas data yang mereka kirim, Anda dapat mengaktifkan pelaporan keikutsertaan dengan menonaktifkan pelaporan otomatis dan hanya mengirimkan data ke Crashlytics saat Anda memilihnya dalam kode Anda:
Di blok
application
fileAndroidManifest.xml
Anda, 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 pada waktu proses. Nilai penggantian tetap ada selama peluncuran aplikasi Anda sehingga Crashlytics dapat mengumpulkan laporan secara otomatis. Untuk menyisih dari pelaporan kerusakan otomatis, berikan
false
sebagai nilai penggantian. Saat disetel kefalse
, nilai baru tidak berlaku hingga aplikasi dijalankan berikutnya.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Kelola data Crash Insights
Crash Insights membantu Anda menyelesaikan masalah dengan membandingkan pelacakan tumpukan anonim Anda dengan pelacakan dari aplikasi Firebase lain dan memberi tahu Anda jika masalah Anda merupakan bagian dari tren yang lebih besar. Untuk banyak masalah, Crash Insights bahkan menyediakan sumber daya untuk membantu Anda men-debug error tersebut.
Crash Insights menggunakan data kerusakan gabungan untuk mengidentifikasi tren stabilitas umum. Jika Anda memilih untuk tidak membagikan data aplikasi, Anda dapat menyisih dari Crash Insights dari menu Crash Insights di bagian atas daftar masalah Crashlytics di konsol Firebase .