يوضّح دليل البدء السريع هذا كيفية إعداد Firebase Crashlytics في تطبيقك باستخدام المكوّن الإضافي Crashlytics Flutter حتى تتمكّن من الحصول على تقارير كاملة عن تعطُّل التطبيقات في وحدة تحكّم Firebase.
يتطلّب إعداد Crashlytics استخدام أداة سطر الأوامر وبيئة تطوير البرامج المتكاملة. لإكمال عملية الإعداد، عليك فرض حدوث استثناء اختبار لإرسال تقرير الأعطال الأول إلى Firebase.
قبل البدء
في حال لم يسبق لك إجراء ذلك، اضبط Firebase وأعده في مشروع Flutter.
إجراء مقترَح: للحصول تلقائيًا على سجلّات مسار التنقل لفهم إجراءات المستخدم التي أدّت إلى حدوث تعذّر أو خطأ غير قاتل أو حدث ANR، عليك تفعيل Google Analytics في مشروعك على Firebase.
إذا لم يكن Google Analytics مفعّلاً في مشروعك الحالي على Firebase، يمكنك تفعيله من علامة التبويب عمليات الدمج ضمن
في وحدة تحكّم > إعدادات المشروعFirebase.Google Analytics إذا كنت بصدد إنشاء مشروع جديد على Firebase، فعِّل Google Analytics أثناء سير عمل إنشاء المشروع.
يُرجى العلم أنّ سجلّات "المسار الإجرائي" متاحة لجميع منصات Android وApple المتوافقة مع Crashlytics (باستثناء watchOS).
الخطوة 1: إضافة Crashlytics إلى مشروع Flutter
من جذر مشروع Flutter، شغِّل الأمر التالي لتثبيت مكوّن Flutter الإضافي لنظام التشغيل Crashlytics.
للاستفادة من سجلّات مسار التنقّل، أضِف أيضًا المكوّن الإضافي Flutter لنظام التشغيل Google Analytics إلى تطبيقك. تأكَّد من تفعيل "إحصاءات Google" في مشروعك على Firebase.
flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
من الدليل الجذر لمشروع Flutter، نفِّذ الأمر التالي:
flutterfire configure
يضمن تنفيذ هذا الأمر أنّ إعدادات Firebase في تطبيقك المكتوب بلغة Flutter محدَّثة، ويضيف إلى تطبيقك المتوافق مع Android المكوّن الإضافي Crashlytics Gradle المطلوب.
بعد اكتمال العملية، أعِد إنشاء مشروع Flutter باتّباع الخطوات التالية:
flutter run
(اختياري) إذا كان مشروعك على Flutter يستخدم العلامة
--split-debug-info
(وعلامة--obfuscate
أيضًا اختياريًا)، يجب تنفيذ خطوات إضافية لعرض قوائم تتبُّع تسلسل استدعاء الدوال البرمجية القابلة للقراءة لتطبيقاتك.منصّات Apple: تأكَّد من أنّ مشروعك يستخدم إعدادات الإصدار المقترَحة (Flutter 3.12.0 والإصدارات الأحدث و Crashlytics Flutter plugin 3.3.4 والإصدارات الأحدث) لكي يتمكّن مشروعك من توليد رموز Flutter (ملفات dSYM) وتحميلها تلقائيًا إلى Crashlytics.
Android: استخدِم FirebaseCLI (الإصدار 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، عليك فرض طرح استثناء اختبار.
أضِف رمزًا إلى تطبيقك يمكنك استخدامه لإجبار اختبار على توليد استثناء.
إذا أضفت معالج أخطاء يستدعي
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
إلىZone
من المستوى الأعلى، يمكنك استخدام الرمز البرمجي التالي لإضافة زر إلى تطبيقك يؤدي عند الضغط عليه إلى طرح استثناء اختبار:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
أنشئ تطبيقك وشغِّله.
يمكنك فرض حدوث استثناء الاختبار لإرسال أول تقرير لتطبيقك:
افتح تطبيقك من جهاز الاختبار أو المحاكي.
في تطبيقك، اضغط على زر استثناء الاختبار الذي أضفته باستخدام الرمز أعلاه.
انتقِل إلى لوحة بيانات Crashlytics في وحدة تحكّم Firebase للاطّلاع على الأعطال في الاختبار.
إذا أعدنا تحميل وحدة التحكّم ولم يظهر لنا تعذُّر الاختبار بعد مرور خمس دقائق،فعِّل تسجيل تصحيح الأخطاء للاطّلاع على ما إذا كان تطبيقك يرسل تقارير الأعطال.
هذا كل ما في الأمر. تتتبّع أداة Crashlytics الآن تطبيقك بحثًا عن الأعطال، وعلى نظام التشغيل Android، تتتبّع الأخطاء غير الخطيرة وأخطاء ANR. انتقِل إلى
لوحة بيانات Crashlytics
لعرض جميع تقاريرك وإحصاءاتك والاطّلاع عليها.
الخطوات التالية
تخصيص إعدادات تقارير الأعطال من خلال إضافة إعدادات تفعيل التقارير والسجلات والمفاتيح وتتبُّع الأخطاء الإضافية غير المميتة
الدمج مع Google Play لكي تتمكّن من فلترة تقارير الأعطال في تطبيق Android حسب Google Play التتبّع مباشرةً في لوحة بيانات Crashlytics يتيح لك ذلك التركيز بشكلٍ أفضل على لوحة البيانات في عمليات الإنشاء المحدّدة.
عرض قوائم تتبُّع تسلسل استدعاء الدوال البرمجية وإحصاءات الأعطال بجانب الرمز البرمجي من خلال نافذة إحصاءات جودة التطبيق في Android Studio (متوفّرة اعتبارًا من IDE 2022.1.1)