Firebase Crashlytics adalah solusi pelaporan error yang ringan dan bekerja secara realtime untuk memudahkan Anda mengelola masalah stabilitas di aplikasi Anda. Crashlytics menghemat waktu pemecahan masalah Anda dengan mengelompokkan error secara cerdas dan menandai keadaan yang menyebabkannya.
Panduan ini menjelaskan cara mengintegrasikan Crashlytics ke project Android Studio Anda sehingga Anda dapat mencatat ID respons iklan. Nanti, saat memecahkan masalah error di aplikasi, Anda dapat mencari ID respons iklan dan menggunakan Pusat Peninjauan Iklan di AdMob untuk menemukan dan memblokir iklan.
Langkah 1: Menambahkan Firebase ke aplikasi Android
Jika ingin mencoba mencatat log dengan Firebase dari aplikasi yang bersih, Anda dapat mendownload atau meng-clone contoh Google Mobile Ads SDK untuk Android repositori di GitHub. Panduan ini secara khusus menggunakan Contoh Banner.
Jika sudah memiliki aplikasi, Anda dapat melanjutkan ke langkah-langkah lainnya dengan nama paket aplikasi Anda. Langkah yang sama juga dapat diterapkan ke contoh lain di repositori dengan sedikit penyesuaian.
Untuk menggunakan Firebase Crashlytics, Anda harus membuat project Firebase dan menambahkan aplikasi ke project tersebut. Jika Anda belum melakukannya, buat project Firebase. Pastikan untuk mendaftarkan aplikasi Anda ke dalamnya.
Di halaman Crashlytics di Firebase console, klik Siapkan Crashlytics.
Di layar yang muncul, klik Tidak > Siapkan aplikasi Firebase baru.
Di build.gradle, tambahkan dependensi untuk Google Analytics, Fabric, dan Crashlytics.
app/build.gradle
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Add the Fabric plugin apply plugin: 'io.fabric' dependencies { // ... // Add the Google Mobile Ads SDK implementation 'com.google.android.gms:play-services-ads:24.4.0' // Add the Firebase Crashlytics dependency. implementation 'com.google.firebase:firebase-crashlytics:19.4.4' }
project/build.gradle
buildscript { repositories { // ... // Add Google's Maven repository. google() } dependencies { // ... classpath 'com.google.gms:google-services:4.4.3' // Add the Fabric Crashlytics plugin. classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.4' } } allprojects { // ... repositories { // Check that Google's Maven repository is included (if not, add it). google() // ... } }
Build dan jalankan aplikasi Anda untuk memastikan Crashlytics dikonfigurasi dengan benar. Setelah berhasil, Anda akan dapat mengakses dasbor Crashlytics.
(Opsional): Menguji Penyiapan Anda
Dengan Menambahkan tombol error Anda dapat memaksa terjadinya error untuk menyebabkan error aplikasi dengan setiap penekanan tombol.
Berikut adalah contoh yang menunjukkan cara menambahkan tombol error dalam metode onCreate()
dari
Activity
:
MainActivity (kutipan)
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); // Start loading the ad in the background. adView.loadAd(new AdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) // Start loading the ad in the background. adView.loadAd(AdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
Di Android Studio, bangun dan jalankan aplikasi Anda di emulator atau perangkat yang terhubung. Setelah aplikasi dimuat, Anda dapat mengklik tombol Error. Luncurkan kembali aplikasi dari perangkat atau Android Studio agar log error diupload ke Crashlytics.
Langkah 2: Mencatat ID respons iklan
Jika Anda memuat beberapa iklan dan menayangkannya pada waktu yang berbeda, sebaiknya catat setiap ID respons iklan dengan kunci terpisah. Misalnya, panduan ini menggunakan contoh yang hanya memiliki satu iklan banner. Oleh karena itu, kita mencatat ID respons iklan sebagai kunci
banner_ad_response_id
dalam cuplikan berikut. Anda memang dapat membuat beberapa key / value pair kustom di Firebase Crashlytics untuk berbagai jenis iklan dan peristiwa iklan (lihat AdListener
untuk siklus proses iklan). Buka Menyesuaikan laporan error Firebase Crashlytics untuk mengetahui informasi selengkapnya tentang logging kustom.
Tambahkan kode berikut ke MyActivity.java
Anda. Pada dasarnya, fungsi ini menggunakan
FirebaseCrashlytics.setCustomKey()
di fungsi callback onAdLoaded()
untuk memastikan iklan telah dimuat sebelum mencoba memanggil getResponseInfo()
.
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); adView.setAdListener(new AdListener() { @Override public void onAdLoaded() { String adResponseId = adView.getResponseInfo().getResponseId(); FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId); } }); // Start loading the ad in the background. adView.loadAd(new AdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) adView.adListener = object : AdListener() { override fun onAdLoaded() { mAdView.responseInfo?.responseId?.let { adResponseId -> FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId) } } } // Start loading the ad in the background. adView.loadAd(AdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
Selamat! Anda kini akan melihat banner_ad_response_id
terbaru di bagian utama sesi error di dasbor Crashlytics. Perhatikan bahwa
beberapa kunci mungkin memerlukan waktu hingga satu jam agar terlihat di dasbor Anda.