Mendapatkan laporan error yang dapat dibaca di dasbor Crashlytics


Secara default, Firebase Crashlytics secara otomatis menginstrumentasikan project Flutter Anda untuk mengupload file simbol yang diperlukan guna memastikan laporan error di-deobfuscate dan dapat dibaca manusia.

Sayangnya, ada beberapa kasus yang dapat menyebabkan project tidak dikonfigurasi sepenuhnya. Panduan ini menguraikan proses otomatisasi dan memberikan langkah pertama untuk men-debug penyiapan project Anda.

Platform Apple

Memeriksa konfigurasi untuk mengupload file dSYM

Dengan menambahkan plugin Crashlytics Flutter dan menjalankan perintah flutterfire configure, skrip pengoperasian akan dicoba ditambahkan ke ruang kerja Xcode pada project Anda. Hal ini akan menemukan dan mengupload file simbol dSYM yang diperlukan ke Crashlytics. Tanpa file ini, Anda akan melihat pemberitahuan "Missing dSYM" di dasbor Crashlytics dan pengecualian akan disimpan oleh backend hingga file yang tidak ada diupload.

Jika mengalami masalah ini, pertama-tama pastikan Anda telah menginstal skrip pengoperasian:

  1. Temukan dan buka file ruang kerja Xcode di direktori iOS project Anda (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).

  2. Identifikasi apakah skrip pengoperasian berjudul [firebase_crashlytics] Crashlytics Upload Symbols telah ditambahkan ke Tahapan Build target Runner.

    Lihat bagian yang berlaku di bawah untuk mengetahui apakah skrip pengoperasian tidak ada atau skrip pengoperasian ada.

Memeriksa konfigurasi versi untuk Flutter dan Crashlytics (jika menggunakan flag --split-debug-info)

Jika project Flutter Anda menggunakan flag --split-debug-info (dan juga flag --obfuscate), langkah tambahan diperlukan untuk menampilkan stack trace yang dapat dibaca untuk aplikasi Anda.

Pastikan project Anda menggunakan konfigurasi versi yang direkomendasikan (Flutter 3.12.0+ dan plugin Flutter Crashlytics versi 3.3.4+) agar project Anda dapat membuat dan mengupload simbol Flutter (file dSYM) ke Crashlytics secara otomatis.

Android

Memeriksa konfigurasi dependensi

Perintah flutterfire configure mencoba menambahkan dependensi yang diperlukan ke file build Gradle project Anda. Tanpa dependensi ini, laporan error di Firebase console mungkin akan di-obfuscate jika obfuscation diaktifkan.

Pastikan baris berikut ada di build.gradle level project dan build.gradle level aplikasi:

  • Dalam file build level project (android/build.gradle), periksa baris berikut:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • Dalam file build level aplikasi (android/app/build.gradle), periksa baris berikut:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

Pastikan Anda menggunakan CLI untuk mengupload simbol Flutter (jika menggunakan flag --split-debug-info)

Jika project Flutter Anda menggunakan flag --split-debug-info (dan juga flag --obfuscate), langkah tambahan diperlukan untuk menampilkan stack trace yang dapat dibaca untuk aplikasi Anda.

Gunakan Firebase CLI (v.11.9.0+) untuk mengupload simbol debug Flutter. Anda harus mengupload simbol debug sebelum melaporkan error dari build kode yang di-obfuscate.

Dari direktori root project Flutter Anda, jalankan perintah berikut:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID: ID Aplikasi Android Firebase Anda (bukan nama paket)
    Contoh ID Aplikasi Android Firebase: 1:567383003300:android:17104a2ced0c9b9b

  • PATH/TO/symbols: Direktori yang sama yang Anda teruskan ke flag --split-debug-info saat membangun aplikasi

Jika masalah berlanjut, lihat panduan khusus Android untuk memecahkan masalah laporan yang di-obfuscate.