ابدأ مع Firebase Crashlytics

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

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

قبل ان تبدأ

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

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

    • إذا لم يتم تمكين Google Analytics في مشروعك الحالي في Firebase، فيمكنك تمكين Google Analytics من علامة التبويب عمليات التكامل في جهازك. > إعدادات المشروع في وحدة تحكم Firebase.

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

    لاحظ أن سجلات التنقل متاحة لجميع منصات Android وApple التي تدعمها Crashlytics (باستثناء watchOS).

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

  1. من جذر مشروع Flutter الخاص بك، قم بتشغيل الأمر التالي لتثبيت البرنامج الإضافي Flutter لـ Crashlytics.

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

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

    flutterfire configure
    

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

  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 CLI (الإصدار 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 عند إنشاء التطبيق

الخطوة 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 لعرض جميع التقارير والإحصائيات الخاصة بك والتحقيق فيها.

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