الحصول على تقارير أعطال قابلة للقراءة في لوحة بيانات Crashlytics (Flutter)

اختيار المنصة: +iOS Android Flutter Unity


تلقائيًا، تعمل أداة Firebase Crashlytics على تجهيز مشروع Flutter الخاص بك لتحميل ملفات الرموز اللازمة لضمان إزالة الغموض عن تقارير الأعطال وجعلها قابلة للقراءة من قِبل الأشخاص العاديين.

للأسف، هناك حالات قد تؤدي إلى عدم ضبط المشروع بالكامل. يوضّح هذا الدليل وظيفة عملية التشغيل الآلي ويقدّم الخطوات الأولى لتصحيح أخطاء إعداد مشروعك.

منصات Apple

التحقّق من إعدادات تحميل ملفات dSYM

ستؤدي إضافة المكوّن الإضافي Crashlytics Flutter وتشغيل الأمر flutterfire configure إلى محاولة إضافة نص برمجي للتشغيل إلى مساحة عمل Xcode الخاصة بمشروعك، والتي تعثر على ملفات رموز dSYM اللازمة وتحمّلها إلى Crashlytics. بدون هذه الملفات، سيظهر لك تنبيه "ملف dSYM غير متوفّر" في لوحة بيانات Crashlytics وسيتم الاحتفاظ بالاستثناءات في الخلفية إلى أن يتم تحميل الملفات غير المتوفّرة.

إذا واجهت هذه المشكلة، تأكَّد أولاً من تثبيت نص التشغيل البرمجي:

  1. ابحث عن ملف مساحة عمل Xcode في دليل iOS الخاص بمشروعك (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace) وافتحه.

  2. تحديد ما إذا تمت إضافة نص برمجي للتشغيل بعنوان [firebase_crashlytics] Crashlytics Upload Symbols إلى مراحل إنشاء هدف Runner.

    اطّلِع على القسم المناسب أدناه لمعرفة ما إذا كان النص البرمجي للتشغيل غير متوفّر أو النص البرمجي للتشغيل متوفّر.

يُرجى التحقّق من إعدادات إصدار Flutter وCrashlytics (في حال استخدام العلامة --split-debug-info)

إذا كان مشروع Flutter يستخدم العلامة --split-debug-info (ويمكن أيضًا استخدام العلامة --obfuscate)، يجب اتّباع خطوات إضافية لعرض تتبُّع تسلسل استدعاء الدوال البرمجية بشكل مقروء لتطبيقك.

تأكَّد من أنّ مشروعك يستخدم إعدادات الإصدار المقترَحة (الإصدار 3.12.0 من Flutter والإصدارات الأحدث والإصدار 3.3.4 من المكوّن الإضافي Crashlytics Flutter والإصدارات الأحدث) ليتمكّن مشروعك من إنشاء رموز Flutter (ملفات dSYM) وتحميلها تلقائيًا إلى Crashlytics.

Android

التحقّق من إعدادات التبعية

يحاول الأمر flutterfire configure إضافة الاعتماديات اللازمة إلى ملفات إصدار Gradle الخاصة بمشروعك. بدون هذه التبعيات، قد يتم حجب تقارير الأعطال في وحدة تحكّم Firebase إذا تم تفعيل ميزة الحجب.

تأكَّد من توفّر الأسطر التالية في ملف build.gradle على مستوى المشروع وفي ملف build.gradle على مستوى التطبيق:

  • في ملف الإصدار على مستوى المشروع (android/build.gradle)، ابحث عن السطر التالي:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • في ملف الإصدار على مستوى التطبيق (android/app/build.gradle)، ابحث عن السطر التالي:

    // ... 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'

تأكَّد من استخدام واجهة سطر الأوامر (CLI) لتحميل رموز Flutter (في حال استخدام العلامة --split-debug-info)

إذا كان مشروع Flutter يستخدم العلامة --split-debug-info (ويمكن أيضًا استخدام العلامة --obfuscate)، يجب اتّباع خطوات إضافية لعرض تتبُّع تسلسل استدعاء الدوال البرمجية بشكل مقروء لتطبيقك.

استخدِم واجهة سطر الأوامر (CLI) في Firebase (الإصدار 11.9.0 أو الإصدارات الأحدث) لتحميل رموز تصحيح الأخطاء في Flutter. يجب تحميل رموز تصحيح الأخطاء قبل الإبلاغ عن عُطل من إصدار رمز مخفي.

من الدليل الجذري لمشروع Flutter، نفِّذ الأمر التالي:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • ‫FIREBASE_APP_ID: رقم تعريف تطبيق Firebase على Android (وليس اسم الحزمة)
    مثال على رقم تعريف تطبيق Firebase على Android: 1:567383003300:android:17104a2ced0c9b9b

  • ‫PATH/TO/symbols: المجلد نفسه الذي يتم تمريره إلى العلامة --split-debug-info عند إنشاء التطبيق

إذا استمرّت المشاكل، يُرجى الرجوع إلى الدليل الخاص بنظام التشغيل Android لتحديد المشاكل وحلّها في التقارير المبهمة.