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


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

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

قبل البدء

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

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

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

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

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

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

استخدِم أداة Swift Package Manager لتثبيت الموارد الاعتمادية في Firebase وإدارتها.

  1. في Xcode، بعد فتح مشروع تطبيقك، انتقِل إلى ملف > إضافة حِزم.
  2. عندما يُطلب منك ذلك، أضِف مستودع حزمة تطوير البرامج (SDK) لمنصة Firebase على أجهزة Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. اختَر مكتبة Crashlytics.
  5. للاستفادة من سجلّات مسار التنفيذ، أضِف أيضًا حزمة تطوير البرامج (SDK) الخاصة بـ Google Analytics إلى تطبيقك. تأكَّد من تفعيل "إحصاءات 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. انقر على علامة التبويب إعدادات الإنشاء، ثم أكمِل الخطوات التالية لكي ينتج 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)
      إذا كان لديك ENABLE_USER_SCRIPT_SANDBOXING=YES وENABLE_DEBUG_DYLIB=YES في إعدادات إصدار مشروعك، فضمِّن ما يلي:
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

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

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

لإكمال عملية إعداد Crashlytics والاطّلاع على البيانات الأولية في لوحة بيانات Crashlytics ضمن وحدة تحكّم Firebase، عليك فرض حدوث عُطل تجريبي.

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

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

    SwiftUI

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

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