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

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

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

قبل البدء

  1. أضِف Firebase إلى مشروع Apple إذا لم يسبق لك إجراء ذلك. إذا لم يكن لديك تطبيق Apple، يمكنك تنزيل نموذج تطبيق.

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

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

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

    يُرجى العِلم أنّ سجلّات شريط التنقل متاحة لجميع منصات Apple المتوافقة مع Crashlytics باستثناء watchOS.

الخطوة 1: إضافة حزمة تطوير البرامج (SDK) في Crashlytics إلى تطبيقك

يمكنك استخدام "مدير حزم Swift" لتثبيت اعتماديات Firebase وإدارتها.

  1. في Xcode، بعد فتح مشروع تطبيقك، انتقِل إلى File > Add Packages (ملف > إضافة حِزم).
  2. أضِف مستودع حزمة تطوير البرامج (SDK) لمنصّات Firebase Apple عندما يُطلب منك ذلك:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. اختَر مكتبة Crashlytics.
  5. للاستفادة من سجلّات شريط التنقّل، أضِف أيضًا حزمة تطوير البرامج (SDK) لمنصّة Firebase الخاصة بخدمة "إحصاءات Google" إلى تطبيقك. وتأكّد من أنّ خدمة "إحصاءات Google" مفعّلة في مشروعك على Firebase.
  6. أضِف العلامة -ObjC إلى القسم علامات الروابط الأخرى في إعدادات إصدار هدفك.
  7. (نظام التشغيل macOS فقط) في Info.plist، أضِف المفتاح NSApplicationCrashOnExceptions واضبطه على YES.
  8. عند الانتهاء، ستبدأ خدمة Xcode تلقائيًا في حلّ المشاكل المتعلّقة بالعناصر التي تعتمد عليها وتنزيلها في الخلفية.

بعد ذلك، اضبط وحدة Firebase على النحو التالي:

  1. استورِد وحدة Firebase في بنية App أو UIApplicationDelegate:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. اضبط مثيل FirebaseApp مشتركًا، عادةً باستخدام طريقة application(_:didFinishLaunchingWithOptions:) لمُفوِّض تطبيقك:

    Swift

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()
    

    Objective-C

    // Use the Firebase library to configure APIs.
    [FIRApp configure];
    

الخطوة 2: إعداد Xcode لتحميل ملفات dSYM تلقائيًا

لإنشاء تقارير أعطال يمكن للمستخدمين قراءتها، يحتاج تطبيق Crashlytics إلى ملفات رمز تصحيح الأخطاء (dSYM) الخاصة بالمشروع. تصف الخطوات التالية كيفية ضبط Xcode لإنتاج dSYM تلقائيًا ومعالجتها وتحميل الملفات كلما أنشأت تطبيقك.

  1. افتح مساحة عمل Xcode لمشروعك، ثم اختَر ملف المشروع في شريط التنقّل الأيمن.

  2. من قائمة الاستهدافات، اختَر هدف الإصدار الرئيسي.

  3. انقر على علامة التبويب Build Settings (إعدادات الإصدار)، ثم أكمِل الخطوات التالية حتى يتمكن Xcode من إنشاء dSYM للإصدارات التي تستخدمها.

    1. انقر على الكل، ثم ابحث عن debug information format.

    2. اضبط تنسيق معلومات تصحيح الأخطاء على DWARF with dSYM File لجميع أنواع الإصدارات.

  4. انقر على علامة التبويب إنشاء مراحل، ثم أكمِل الخطوات التالية حتى يتمكّن Xcode من معالجة ملفات dSYM وتحميل الملفات.

    1. انقر على > مرحلة تشغيل النص البرمجي الجديدة.

      تأكَّد من أنّ مرحلة تشغيل النص البرمجي الجديدة هذه هي مرحلة الإنشاء الأخيرة لمشروعك، وإلا لن يتمكّن تطبيق Crashlytics من معالجة dSYM بشكل صحيح.

    2. وسِّع القسم تشغيل النص البرمجي الجديد.

    3. في حقل النص البرمجي (الموجود ضمن التصنيف Shell)، أضِف النص البرمجي التالي للتشغيل.

      يعالج هذا النص البرمجي ملفات dSYM لمشروعك ويحمّل الملفات إلى Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. في قسم ملفات الإدخال، أضِف المسارات لمواقع الملفات التالية:

      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
      $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
      $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

للحصول على معلومات أكثر تفصيلاً حول ملفات dSYM وأداة Crashlytics (بما في ذلك كيفية تحميل ملفات dSYM يدويًا)، انتقِل إلى مقالة الحصول على تقارير الأعطال التي تمت إزالة تشويشها.

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

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

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

    يمكنك استخدام الرمز التالي لإضافة زر إلى تطبيقك يؤدي إلى تعطُّله عند الضغط عليه. تمت تسمية الزر باسم "اختبار العطل".

    واجهة المستخدم

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    واجهة UIKit

    Swift

    import UIKit
    
    class ViewController: UIViewController {
      override func viewDidLoad() {
          super.viewDidLoad()
    
          // Do any additional setup after loading the view, typically from a nib.
    
          let button = UIButton(type: .roundedRect)
          button.frame = CGRect(x: 20, y: 50, width: 100, height: 30)
          button.setTitle("Test Crash", for: [])
          button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
          view.addSubview(button)
      }
    
      @IBAction func crashButtonTapped(_ sender: AnyObject) {
          let numbers = [0]
          let _ = numbers[1]
      }
    }
    

    Objective-C

    #import "ViewController.h"
    
    @implementation ViewController
    ‐ (void)viewDidLoad {
        [super viewDidLoad];
    
        // Do any additional setup after loading the view, typically from a nib.
    
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(20, 50, 100, 30);
        [button setTitle:@"Test Crash" forState:UIControlStateNormal];
        [button addTarget:self action:@selector(crashButtonTapped:)
            forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    
    ‐ (IBAction)crashButtonTapped:(id)sender {
        @[][1];
    }
    
    @end
    
  2. أنشِئ تطبيقك وشغِّله في Xcode مع عدم ربط برنامج تصحيح الأخطاء في Xcode.

    1. انقر على إنشاء المخطط الحالي ثم تشغيله لإنشاء تطبيقك على جهاز اختبار أو محاكي.

    2. انتظِر إلى أن يتم تشغيل تطبيقك، ثم انقر على إيقاف تشغيل المخطط أو الإجراء لإغلاق المثيل الأول من تطبيقك. تضمّنت هذه النسخة الأولية برنامج تصحيح الأخطاء الذي يتداخل مع تطبيق Crashlytics.

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

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

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

    3. بعد تعطُّل تطبيقك، يمكنك تشغيله مرة أخرى من Xcode حتى يتمكّن التطبيق من إرسال تقرير الأعطال إلى Firebase.

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

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


وهذا كل ما في الأمر! يراقب تطبيق Crashlytics الآن تطبيقك بحثًا عن الأعطال. يمكنك الانتقال إلى لوحة بيانات Crashlytics لعرض جميع التقارير والإحصاءات والتحقّق منها.

الخطوات اللاحقة