الحصول على تقارير أعطال قابلة للقراءة في لوحة بيانات 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 أو الإصدارات الأحدث والمكوّن الإضافي Crashlytics من Flutter بالإصدار 3.3.4 أو الإصدارات الأحدث) لكي يتمكّن مشروعك من إنشاء رموز 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: رقم تعريف تطبيق Android على Firebase (وليس اسم الحزمة)
    مثال على رقم تعريف تطبيق Android على Firebase: 1:567383003300:android:17104a2ced0c9b9b

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

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