Melaporkan Error di Android

Firebase Crash Reporting membuat laporan mendetail mengenai error pada aplikasi Anda. Error dikelompokkan ke dalam masalah berdasarkan pelacakan tumpukan yang serupa, dan diurutkan berdasarkan tingkat keparahan dampaknya terhadap pengguna Anda. Selain menerima laporan otomatis, Anda dapat membuat log peristiwa kustom untuk membantu menemukan masalah yang menyebabkan aplikasi tidak bekerja.

Menyiapkan Crash Reporting

Lakukan langkah-langkah berikut untuk menyiapkan Crash Reporting di Android:

  1. Siapkan Firebase untuk project Android Anda jika belum ada.
  2. Di Firebase console, tambahkan aplikasi Anda ke project Firebase.
  3. Tambahkan dependensi untuk Crash Reporting ke file build.gradle level aplikasi:
    implementation 'com.google.firebase:firebase-crash:16.2.1'

Membuat error pertama

Firebase Crash Reporting otomatis menghasilkan laporan untuk error yang bersifat fatal (atau pengecualian yang tidak diketahui). Namun, Anda juga dapat menghasilkan laporan dalam instance, jika ingin menangkap pengecualian tetapi masih ingin melaporkan kemunculannya. Untuk melaporkan error tersebut, ikuti langkah-langkah berikut ini:

  1. Tambahkan panggilan ke metode report statis di aktivitas utama:
    FirebaseCrash.report(new Exception("My first Android non-fatal error"));
  2. Luncurkan aplikasi.
  3. Di adb logcat atau log Android Studio, cari pesan yang mengonfirmasi bahwa Crash Reporting sudah aktif.
  4. Periksa bagian Crash Reporting di Firebase console untuk melihat error. Perlu diperhatikan bahwa dibutuhkan waktu 1-2 menit hingga error terlihat.

Membuat log kustom

Anda dapat menggunakan Crash Reporting untuk membuat log peristiwa kustom dalam laporan error dan bisa juga logcat. Jika ingin membuat log peristiwa dan tidak menghendaki output logcat, Anda cukup meneruskan string sebagai argumen, seperti yang ditunjukkan dalam contoh ini:

FirebaseCrash.log("Activity created");

Jika ingin membuat output logcat, Anda juga harus memasukkan level log dan tag.

Memperjelas label ProGuard

ProGuard menghasilkan file mapping.txt yang memetakan simbol-simbol yang dikaburkan ProGuard ke nama aslinya. Jika Proguard telah aktif, mengupload file pemetaan akan membuat Anda dapat melihat pelacakan tumpukan yang terbaca dalam antarmuka Crash Reporting.

Untuk keperluan pengujian, Anda dapat menyiapkan Proguard untuk jenis build debug, kemudian melakukan build dengan perintah ./gradlew assembleDebug seperti yang ditampilkan di bawah ini:

debug {
   minifyEnabled true
   proguardFiles getDefaultProguardFile('proguard-android.txt'),
     'proguard-rules.pro'
}

Mengupload file pemetaan ProGuard dengan Gradle

Untuk melihat pelacakan tumpukan yang terbaca di Firebase console, Anda dapat menggunakan tugas Gradle yang dibuat oleh plugin Crash Reporting untuk mengupload file pemetaan ProGuard ke Firebase.

Untuk mengonfigurasi plugin Crash Reporting:

  1. Tambahkan aturan ke file build.gradle di tingkat root untuk menyertakan plugin Crash Reporting:
        buildscript {
          repositories {
            jcenter()
            // ...
          }
    
          dependencies {
            // ...
            // For Android Studio 2.x, use firebase-plugins version 1.1.1
            classpath 'com.google.firebase:firebase-plugins:1.1.1'
            // For Android Studio 3.0, use firebase-plugins version 1.1.5
            //classpath 'com.google.firebase:firebase-plugins:1.1.5'
          }
        }
    
  2. Di file Gradle project aplikasi Anda (biasanya app/build.gradle), tambahkan baris yang ditampilkan di bawah ini, di bawah `ADD THIS`, untuk mengaktifkan plugin Crash Reporting:
        apply plugin: 'com.android.application'
        // ADD THIS
        apply plugin: 'com.google.firebase.firebase-crash'
    
        android {
          // ...
        }
    
        dependencies {
          // ...
        }
    
  3. Selanjutnya, buat akun layanan dan kunci pribadi:

    Download kunci akun layanan untuk mengautentikasi upload Anda. Dari Firebase console, pilih project Anda, lalu klik Buat Kunci Pribadi Baru.

  4. Tambahkan properti bernama FirebaseServiceAccountFilePath dengan lokasi file ke $HOME/.gradle/gradle.properties, atau tentukan lokasi lain di baris perintah menggunakan tanda -P. Anda nanti dapat mengupdate properti FirebaseServiceAccountFilePath untuk menjalankan tugas dengan file akun layanan yang berbeda.

    Selain itu, Anda dapat menentukan lokasi file pemetaan di baris perintah menggunakan tanda -P untuk menyetel properti seperti ini:

    ./gradlew -PFirebaseServiceAccountFilePath=/usr/ServiceAccount/MyApp-a287fsd34.json :app:firebaseUploadReleaseProguardMapping
  5. Dari direktori project, Anda dapat menjalankan perintah gradlew untuk membuat APK dan mengupload file pemetaannya. Misalnya:

    ./gradlew :app:firebaseUploadReleaseProguardMapping

    Nama persis tugas upload beragam tergantung nama variasi build, yang mengikuti pola berikut: firebaseUpload<VariantName>ProguardMapping. Untuk mengetahui daftar lengkap nama tugas upload yang tersedia, jalankan perintah gradlew berikut:

    ./gradlew :app:tasks

    Anda juga dapat menentukan properti Gradle yang akan digunakan ketika mengupload file pemetaan ProGuard menggunakan tugas firebaseUploadArchivedProguardMapping. Anda dapat menggunakan tugas ini guna menentukan properti Gradle untuk FirebaseCrashMappingFilePath, FirebaseCrashVersionCode, dan FirebaseCrashPackageName, seperti yang ditunjukkan pada contoh berikut:

    FirebaseCrashMappingFilePath=path/to/mapping/file
    FirebaseCrashVersionCode=2
    FirebaseCrashPackageName=example.package.name
    
    Dalam contoh ini, project Anda menggunakan file google-services.json default yang ada di dalam folder modul project Anda, biasanya app/. Jika Anda memilih untuk tidak menggunakan file google-services.json, Anda harus menentukan properti Gradle untuk FirebaseCrashApiKey dan FirebaseCrashAppId.

Bekerja dengan aplikasi yang membangun beberapa APK

Plugin juga berfungsi untuk aplikasi yang menggunakan Dukungan Beberapa APK. Untuk setiap tugas variasi build, tugas akan mengupload file pemetaan untuk semua APK variasi tersebut.

Misalnya, anggaplah Anda memiliki variasi build bernama fullRelease serta beberapa APK seperti app-full-armeabi-v7a-release.apk dan app-full-armeabi-release.apk untuk mendukung berbagai arsitektur, seperti ditunjukkan dalam contoh Gradle berikut.

    productFlavors {
        full {
            applicationId "com.google.firebase.sample.testapp"
            versionName "1.0-full"
        }
    }

    splits {
        abi {
            enable true
            reset()
            include 'armeabi', 'armeabi-v7a'
            universalApk true
        }
    }

Menjalankan tugas ./gradlew :app:firebaseUploadReleaseProguardMapping akan mengupload file pemetaan ProGuard untuk app-armeabi-v7a-release.apk dan app-armeabi-release.apk ke server. Output ke konsol akan menampilkan hal berikut untuk upload ini:

Successfully uploaded proguard mapping file for app fullArmeabiRelease with versionCode: 1!
Successfully uploaded proguard mapping file for app fullArmeabi-v7aRelease with versionCode: 2!

Mengupload file pemetaan ProGuard secara manual

Sebagai alternatif, Anda dapat mengupload file mapping.txt ke Firebase console secara manual dengan mengakses Crash Reporting, lalu memilih tab File Pemetaan.

Anda dapat menemukan file yang akan diupload di lokasi yang mirip dengan yang berikut ini, tetapi spesifik untuk aplikasi Anda:

<project root>/<module name>/build/outputs/mapping/<build type>/<appname>-proguard-mapping.txt

Misalnya:

app/build/outputs/mapping/debug/app-proguard-mapping.txt

Masalah umum

Jika menggunakan Android Studio 3.0, Anda akan menemukan error berikut saat menggunakan plugin Crash Reporting versi 1.1.0 atau 1.1.1. Sebaiknya gunakan plugin versi 1.1.5 di file build.gradle pada tingkat root aplikasi Anda:

Cannot create tasks to upload ProGuard Mapping File.java.lang.IllegalStateException: Resolving configuration 'androidTestAnnotationProcessor' directly is not allowed

Langkah Berikutnya

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.