Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menyesuaikan laporan kerusakan Firebase Crashlytics

Panduan ini berisi penjelasan cara menyesuaikan laporan kerusakan menggunakan Firebase Crashlytics SDK. Secara default, Crashlytics mengumpulkan laporan kerusakan secara otomatis untuk semua pengguna aplikasi Anda (Anda dapat menonaktifkan pelaporan kerusakan otomatis dan mengaktifkan pilihan keikutsertaan pelaporan untuk pengguna Anda). Crashlytics menyediakan empat mekanisme logging siap pakai: kunci kustom, log kustom, ID pengguna, dan pengecualian yang tertangkap.

Menambahkan kunci kustom

Kunci kustom membantu Anda mendapatkan status tertentu aplikasi menjelang error. Anda dapat mengaitkan key-value pair apa saja dengan laporan kerusakan, lalu menggunakan kunci kustom untuk menelusuri dan memfilter laporan kerusakan di Firebase console.

  • Di dasbor Crashlytics, Anda dapat mencari masalah yang cocok dengan kunci kustom.
  • Saat meninjau masalah tertentu di konsol, Anda dapat melihat kunci kustom yang dikaitkan untuk setiap peristiwa (subtab Kunci) dan bahkan memfilter peristiwa menurut kunci kustom (menu Filter di bagian atas halaman).

Gunakan metode instance setCustomKey untuk menetapkan key-value pair:

Java

setCustomKey kelebihan beban untuk parameter value untuk menerima argumen primitif atau String. Contoh:

// Set a key to a string.
FirebaseCrashlytics.getInstance().setCustomKey("str_key", "hello");

// Set a key to a boolean.
FirebaseCrashlytics.getInstance().setCustomKey("bool_key", true);

// Set a key to an int.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1);

// Set a key to a long.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1L);

// Set a key to a float.
FirebaseCrashlytics.getInstance().setCustomKey("float_key", 1.0f);

// Set a key to a double.
FirebaseCrashlytics.getInstance().setCustomKey("double_key", 1.0);
Kotlin
// Set a key to a string.
FirebaseCrashlytics.getInstance().setCustomKey("str_key", "hello")

// Set a key to a boolean.
FirebaseCrashlytics.getInstance().setCustomKey("bool_key", true)

// Set a key to an int.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1)

// Set a key to an long.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1L)

// Set a key to a float.
FirebaseCrashlytics.getInstance().setCustomKey("float_key", 1.0f)

// Set a key to a double.
FirebaseCrashlytics.getInstance().setCustomKey("double_key", 1.0)

Anda juga dapat mengubah nilai kunci yang ada dengan memanggil kunci tersebut dan menetapkannya ke nilai yang berbeda. Contoh:

Java
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 50);

// Set int_key from 50 to 100.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 100);
Kotlin
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 50)

// Set int_key from 50 to 100.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 100)

Tambahkan key-value pair secara massal dengan meneruskan instance CustomKeysAndValues ke metode instance 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

Untuk Kotlin, fungsi 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)
}

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 Log.

Gunakan log untuk membantu menentukan masalah. Contoh:

Java

FirebaseCrashlytics.getInstance().log("Higgs-Boson detected! Bailing out");

Kotlin+KTX

FirebaseCrashlytics.getInstance().log("Higgs-Boson detected! Bailing out")

Menetapkan ID pengguna

Untuk mendiagnosis masalah, mengetahui pengguna mana yang mengalami error akan sangat membantu. Crashlytics menyertakan cara mengidentifikasi pengguna secara anonim dalam laporan kerusakan Anda.

Untuk menambahkan ID pengguna ke laporan, tetapkan ID unik untuk masing-masing pengguna dalam bentuk nomor ID, token, atau nilai hash:

Java

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

Kotlin+KTX

FirebaseCrashlytics.getInstance().setUserId("12345")

Jika perlu menghapus ID pengguna setelah menyetelnya, reset nilai ke string kosong. Menghapus ID pengguna tidak menghapus catatan Crashlytics yang ada. Jika ingin menghapus catatan yang terkait dengan ID pengguna, hubungi dukungan Firebase.

Melaporkan pengecualian non-fatal

Selain melaporkan error aplikasi secara otomatis, Crashlytics memungkinkan Anda mencatat pengecualian non-fatal dan mengirimkannya kepada Anda saat aplikasi diluncurkan berikutnya.

Gunakan metode recordException untuk mencatat pengecualian non-fatal di blok catch aplikasi Anda. Contoh:

Java

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

Kotlin+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    FirebaseCrashlytics.getInstance().recordException(e)
    // ...handle the exception.
}
Peringatan: Jika ingin menyertakan nilai unik (misalnya, ID pengguna atau stempel waktu) dalam pesan pengecualian, gunakan kunci kustom, bukan menambahkan nilai secara langsung dalam pesan pengecualian. Menambahkan nilai secara langsung dapat menyebabkan beberapa masalah dan dapat menyebabkan Crashlytics membatasi pelaporan kerusakan di aplikasi Anda.

Semua pengecualian yang dicatat muncul sebagai masalah non-fatal di Firebase console. Ringkasan masalah berisi semua informasi status yang biasanya Anda dapatkan dari laporan kerusakan, disertai 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.

Mengaktifkan pilihan keikutsertaan pelaporan

Secara default, Crashlytics otomatis mengumpulkan laporan kerusakan untuk semua pengguna aplikasi Anda. Untuk memberi pengguna kontrol lebih terhadap data yang mereka kirim, Anda dapat mengaktifkan pilihan keikutsertaan pelaporan dengan menonaktifkan pelaporan otomatis dan hanya mengirim data ke Crashlytics saat Anda memilihnya dalam kode:

  1. Pada blok application file AndroidManifest.xml, tambahkan tag meta-data untuk menonaktifkan pengumpulan otomatis:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Aktifkan pengumpulan untuk pengguna tertentu dengan memanggil penggantian pengumpulan data Crashlytics saat runtime. Nilai penggantian tetap sama setiap kali aplikasi diluncurkan, sehingga Crashlytics dapat otomatis mengumpulkan laporan. Untuk tidak diikutsertakan dalam pelaporan kerusakan otomatis, teruskan false sebagai nilai penggantian. Jika ditetapkan ke false, nilai baru tidak berlaku hingga aplikasi dijalankan berikutnya.

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    Kotlin+KTX

    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 banyak 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.