الحصول على تقارير أعطال قابلة للقراءة في لوحة بيانات 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 اختياريًا)، يجب اتّخاذ خطوات إضافية لعرض تتبُّع تسلسل استدعاء الدوال القابل للقراءة لتطبيقك.

تأكَّد من أنّ مشروعك يستخدم إعدادات الإصدار المقترَحة (Flutter 3.12.0 والإصدارات الأحدث ومكوّن 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'

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

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

استخدِم Firebase واجهة سطر الأوامر في 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 لتحديد مشاكل التقارير التي تم إخفاؤها وحلّها.