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:
Temukan dan buka file ruang kerja Xcode di direktori iOS project Anda (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace
).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.
Skrip pengoperasian untuk upload otomatis dSYM tidak ada
Jika skrip pengoperasian ini tidak ada, Anda dapat menambahkannya secara manual:
Temukan ID Aplikasi Firebase untuk aplikasi Apple Anda. Berikut dua tempat berbeda untuk menemukan ID ini:
Di Firebase console, buka
. Scroll ke bawah ke kartu Your apps, lalu klik Aplikasi Apple Firebase untuk melihat informasi aplikasi, termasuk App ID. > Project settings Di direktori level teratas project Flutter, temukan file
firebase_options.dart
Anda. ID Aplikasi Firebase untuk aplikasi Apple Anda diberi label sebagaiGOOGLE_APP_ID
.
Klik
> New Run Script Phase.Pastikan fase Run Script baru ini adalah fase build terakhir project Anda; jika tidak, Crashlytics tidak akan dapat memproses dSYM dengan benar.
Perluas bagian Run Script baru.
Di kolom skrip (terletak di bawah label Shell), tambahkan skrip pengoperasian berikut.
Skrip ini memproses file dSYM Anda dan mengupload file tersebut ke Crashlytics.
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai
FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai
FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM- FIREBASE_APP_ID: ID Aplikasi Apple Firebase Anda (bukan ID paket Apple Anda)
Contoh ID Aplikasi Apple Firebase:1:1234567890:ios:321abc456def7890
Perlu menemukan ID Aplikasi Firebase Anda?
Berikut dua cara untuk menemukan ID Aplikasi Firebase:
Di file
GoogleService-Info.plist
, ID Aplikasi Anda adalah nilaiGOOGLE_APP_ID
; atauDi Firebase console, buka Project settings. Scroll ke bawah ke kartu Your apps, lalu klik Aplikasi Firebase yang diinginkan untuk menemukan ID Aplikasi-nya.
- FIREBASE_APP_ID: ID Aplikasi Apple Firebase Anda (bukan ID paket Apple Anda)
Di bagian Input Files, tambahkan jalur untuk lokasi file berikut:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
Pahami alasan lokasi file ini diperlukan
Xcode mencari lokasi yang ditentukan untuk file input ini guna memastikan bahwa file build tersedia untuk skrip pengoperasian. Selain itu, jika User Script Sandboxing diaktifkan, Xcode hanya mengizinkan skrip pengoperasian untuk mengakses file yang ditentukan di Input Files.
- Dengan menyediakan lokasi file dSYM project, Crashlytics dapat memproses dSYM.
- Dengan menyediakan lokasi file
GoogleService-Info.plist
yang di-build di aplikasi, Crashlytics dapat mengaitkan dSYM dengan aplikasi Firebase Anda. - Dengan menyediakan lokasi file yang dapat dieksekusi pada aplikasi, skrip pengoperasian dapat mencegah upload duplikat dari dSYM yang sama. Perlu diperhatikan bahwa biner aplikasi tidak diupload.
Skrip pengoperasian untuk upload otomatis dSYM ada
Jika skrip pengoperasian sudah ada, lihat panduan khusus Apple untuk memecahkan masalah dSYM. Anda harus melakukan langkah-langkah tambahan berikut jika memilih untuk mengupload file dSYM melalui proses yang dijelaskan:
Temukan ID Aplikasi Firebase untuk aplikasi Apple Anda. Berikut dua tempat berbeda untuk menemukan ID ini:
Di Firebase console, buka
. Scroll ke bawah ke kartu Your apps, lalu klik Aplikasi Apple Firebase untuk melihat informasi aplikasi, termasuk App ID. > Project settings Di direktori level teratas project Flutter, temukan file
firebase_options.dart
Anda. ID Aplikasi Firebase untuk aplikasi Apple Anda diberi label sebagaiGOOGLE_APP_ID
.
Saat menjalankan skrip
upload-symbols
, gunakan
, bukan-ai FIREBASE_APPLE_APP_ID .-gsp /path/to/GoogleService-Info.plist
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
Perlu menemukan ID Aplikasi Firebase Anda?
Berikut dua cara untuk menemukan ID Aplikasi Firebase:
Di file
google-services.json
, ID Aplikasi Anda adalah nilaimobilesdk_app_id
; atauDi Firebase console, buka Project settings. Scroll ke bawah ke kartu Your apps, lalu klik Aplikasi Firebase yang diinginkan untuk menemukan ID Aplikasi-nya.
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.