بدء استخدام 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، بعد فتح مشروع التطبيق، انتقِل إلى ملف > إضافة حزم.
  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. أضِف رمزًا إلى تطبيقك يمكنك استخدامه لفرض حدوث عطل تجريبي.

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

    واجهة SwiftUI

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

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

    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 لعرض جميع التقارير والإحصاءات والتحقيق فيها.

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

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