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
Konfigurasikan dan lakukan inisialisasi Firebase di project Flutter jika Anda belum melakukannya.
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 melakukannya dari tab Integrations di
di Firebase console. > Project settings 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
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
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.
Setelah selesai, bangun ulang project Flutter Anda:
flutter run
(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 memaksakan penampilan pengecualian pengujian.
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)
keZone
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"), ),
Bangun dan jalankan aplikasi Anda.
Paksa penampilan pengecualian pengujian agar Anda dapat mengirimkan laporan pertama aplikasi:
Buka aplikasi dari emulator atau perangkat pengujian.
Di aplikasi Anda, tekan tombol pengecualian pengujian yang ditambahkan menggunakan kode di atas.
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
Sesuaikan penyiapan laporan error dengan menambahkan pelaporan keikutsertaan, log, kunci, dan pelacakan error non-fatal lainnya.
Integrasikan dengan Google Play sehingga Anda dapat memfilter laporan error aplikasi Android menurut jalur Google Play secara langsung di dasbor Crashlytics. Dengan demikian, Anda dapat lebih memfokuskan dasbor pada build tertentu.
Lihat stack trace dan statistik error beserta kode Anda dengan jendela App Quality Insights di Android Studio (tersedia mulai dari Electric Eel 2022.1.1).