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