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

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

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

قبل البدء

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

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

    • في حال لم تكن خدمة "إحصاءات Google" متوفرة في مشروعك الحالي على Firebase. بشكل عام، يمكنك تفعيل "إحصاءات Google" علامة التبويب عمليات الدمج في > إعدادات المشروع في وحدة تحكُّم Firebase.

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

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

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

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

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

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

    flutterfire configure
    

    يضمن تشغيل هذا الأمر ضبط إعدادات Firebase لتطبيق Flutter محدّثًا، كما تضيف أداة Grashlytics 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 لعرض جميع التقارير والإحصاءات والتحقيق فيها.

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