Mulai Menggunakan Firebase Crashlytics


Panduan memulai ini menjelaskan cara menyiapkan Firebase Crashlytics di aplikasi Anda dengan plugin Flutter Crashlytics sehingga Anda bisa mendapatkan laporan error yang komprehensif di Firebase console.

Untuk menyiapkan Crashlytics, Anda harus menggunakan alat command line dan IDE. Untuk menyelesaikan penyiapan, paksa penampilan pengecualian pengujian agar Anda dapat mengirimkan laporan error pertama ke Firebase.

Sebelum memulai

  1. Konfigurasikan dan lakukan inisialisasi Firebase di project Flutter jika Anda belum melakukannya.

  2. Direkomendasikan: Untuk mendapatkan log breadcrumb secara otomatis guna memahami tindakan pengguna yang menyebabkan peristiwa error, non-fatal, atau ANR, Anda harus mengaktifkan Google Analytics di project Firebase Anda.

    • Jika project Firebase yang ada belum mengaktifkan Google Analytics, Anda dapat mengaktifkan Google Analytics dari tab Integrations di > Project settings di Firebase console.

    • Jika Anda membuat project Firebase baru, aktifkan Google Analytics selama alur kerja pembuatan project.

    Perhatikan bahwa log breadcrumb tersedia untuk semua platform Android dan Apple yang didukung oleh Crashlytics (kecuali watchOS).

Langkah 1: Tambahkan Crashlytics ke project Flutter Anda

  1. Dari root project Flutter Anda, jalankan perintah berikut untuk menginstal plugin Flutter untuk Crashlytics.

    Untuk memanfaatkan log breadcrumb, tambahkan juga plugin Flutter untuk Google Analytics ke aplikasi Anda. Pastikan Google Analytics diaktifkan di project Firebase Anda.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. Dari direktori root project Flutter Anda, jalankan perintah berikut:

    flutterfire configure
    

    Dengan menjalankan perintah ini, Anda akan memastikan bahwa konfigurasi Firebase aplikasi Flutter merupakan yang terbaru dan, untuk Android, sudah menambahkan plugin Gradle Crashlytics yang diperlukan ke aplikasi Anda.

  3. Setelah selesai, bangun ulang project Flutter Anda:

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

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

    • Android: 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

Langkah 2: Konfigurasikan pengendali error

Anda dapat secara otomatis menangkap semua error yang ditampilkan dalam framework Flutter dengan mengganti FlutterError.onError dengan FirebaseCrashlytics.instance.recordFlutterFatalError:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

Untuk menangkap error asinkron yang tidak ditangani oleh framework Flutter, gunakan PlatformDispatcher.instance.onError:

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

Untuk mengetahui contoh cara menangani jenis error lainnya, baca artikel Menyesuaikan laporan error.

Langkah 3: Paksa error pengujian untuk menyelesaikan penyiapan

Untuk menyelesaikan penyiapan Crashlytics dan melihat data awal di dasbor Crashlytics pada Firebase console, Anda harus memaksa pengecualian pengujian ditampilkan.

  1. Tambahkan kode ke aplikasi yang dapat Anda gunakan untuk memaksakan penampilan pengecualian pengujian.

    Jika telah menambahkan pengendali error yang memanggil FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) ke Zone level teratas, Anda dapat menggunakan kode berikut untuk menambahkan tombol ke aplikasi yang, saat ditekan, akan menampilkan pengecualian pengujian:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Bangun dan jalankan aplikasi Anda.

  3. Paksa penampilan pengecualian pengujian agar Anda dapat mengirimkan laporan pertama aplikasi:

    1. Buka aplikasi dari emulator atau perangkat pengujian.

    2. Di aplikasi Anda, tekan tombol pengecualian pengujian yang ditambahkan menggunakan kode di atas.

  4. Buka dasbor Crashlytics di Firebase console untuk melihat error pengujian Anda.

    Jika Anda sudah me-refresh konsol dan masih tidak melihat error pengujian setelah lima menit, aktifkan logging debug untuk melihat apakah aplikasi Anda mengirim laporan error atau tidak.


Dan selesai! Crashlytics kini akan memantau aplikasi Anda untuk menemukan error dan, pada Android, error non-fatal dan ANR. Buka dasbor Crashlytics untuk melihat dan menyelidiki semua laporan dan statistik Anda.

Langkah berikutnya