بدء استخدام Firebase Crashlytics

توضِّح طريقة البدء السريع هذه كيفية إعداد "Firebase Crashlytics" في تطبيقك. باستخدام المكوّن الإضافي Crashlytics في Flutter لتتمكن من تلقّي أعطال شاملة في وحدة التحكم Firebase.

يتضمّن إعداد Crashlytics استخدام أداة سطر أوامر وبيئة تطوير متكاملة (IDE). لإنهاء الإعداد، يجب فرض استثناء اختباري لإرسال أول تقرير أعطال إلى Firebase.

قبل البدء

  1. إذا لم تكن قد فعلت ذلك بالفعل، ضبط Firebase وإعداده في Flutter مشروعك.

  2. موصى به: للحصول تلقائيًا على سجلّات شريط التنقّل لفهم إجراءات المستخدم التي تؤدي إلى أعطال أو أحداث غير فادحة أو أخطاء ANR، عليك تفعيل Google Analytics في مشروعك على Firebase.

    • إذا لم يكن مشروعك الحالي في Firebase يحتوي على Google Analytics مُفعَّل، يمكنك تفعيل "Google Analytics" من في علامة التبويب عمليات الدمج على إعدادات المشروع في وحدة التحكم Firebase.

    • إذا كنت بصدد إنشاء مشروع جديد على Firebase، فعِّل "Google Analytics". أثناء سير عمل إنشاء المشروع.

    يُرجى العلم أنّ سجلّات شريط التنقّل متوفّرة لجميع أنظمة Android وApple الأساسية. متوافق مع Crashlytics (باستثناء نظام التشغيل WatchOS).

الخطوة 1: إضافة Crashlytics إلى مشروع Flutter

  1. من جذر مشروع Flutter، نفِّذ الأمر التالي لتثبيت. مكوّن Flutter الإضافي في Crashlytics

    للاستفادة من سجلات شريط التنقل يمكنك أيضًا إضافة مكوّن Flutter الإضافي الخاص بـ Google Analytics إلى تطبيقك. تأكَّد من تم تفعيل "إحصاءات Google" في مشروع Firebase.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. من الدليل الجذري لمشروع Flutter، شغِّل الأمر التالي:

    flutterfire configure
    

    يضمن تشغيل هذا الأمر ضبط إعدادات Firebase لتطبيق Flutter محدّثًا، كما تضيف Crashlytics أداة Gradle المطلوبة لنظام التشغيل Android المكون الإضافي إلى تطبيقك.

  3. بعد اكتمال عملية الإنشاء، أعِد إنشاء مشروع Flutter:

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

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

    • على أجهزة Android: استخدِم 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 عند إنشاء التطبيق

الخطوة 2: ضبط معالِجات الأعطال

يمكنك رصد كل الأخطاء التي يتم رصدها تلقائيًا في Flutter من خلال إلغاء FlutterError.onError من خلال 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());
}

لرصد الأخطاء غير المتزامنة التي لا تتم معالجتها في إطار عمل Flutter، استخدِم 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());

}

للحصول على أمثلة حول كيفية التعامل مع أنواع أخرى من الأخطاء، يُرجى الاطّلاع على تخصيص تقارير الأعطال

الخطوة 3: فرض عطل في الاختبار لإنهاء عملية الإعداد

لإنهاء عملية إعداد "Crashlytics" والاطّلاع على البيانات الأولية في "Crashlytics" بوحدة التحكم Firebase، فيجب أن تفرض استثناء اختبار الرمي.

  1. أضِف رمزًا إلى تطبيقك يمكنك استخدامه لفرض تطبيق استثناء تجريبي الرمي.

    في حال أضفت معالِج أخطاء يستدعي في FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) Zone من المستوى الأعلى، يمكنك استخدام الرمز التالي لإضافة زر إلى تطبيقك عند الضغط عليه، يطرح استثناء اختبار:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. أنشئ تطبيقك وشغِّله.

  3. فرض طرح الاستثناء التجريبي لإرسال أول رمز في تطبيقك التقرير:

    1. افتح تطبيقك من جهاز الاختبار أو المحاكي.

    2. في تطبيقك، اضغط على زر استثناء الاختبار الذي أضفته باستخدام الرمز أعلاه.

  4. الانتقال إلى قسم لوحة بيانات Crashlytics في وحدة تحكّم Firebase للاطّلاع على الأعطال التجريبية.

    إذا أعدت تحميل وحدة التحكّم ولكن لم يظهر عطل الاختبار بعد ذلك بعد خمس دقائق، تفعيل ميزة تسجيل معلومات تصحيح الأخطاء لمعرفة ما إذا كان تطبيقك يرسل تقارير الأعطال.


وهذا كل ما في الأمر! يراقب "Crashlytics" الآن تطبيقك بحثًا عن أي أعطال وعلى في نظام التشغيل Android، الأخطاء غير الفادحة وأخطاء ANR. انتقل إلى لوحة بيانات Crashlytics لعرض جميع التقارير والإحصاءات والتحقيق فيها.

الخطوات التالية