با Firebase Crashlytics شروع کنید


این راهنمای سریع نحوه راه‌اندازی Firebase Crashlytics در برنامه شما با Firebase Crashlytics SDK را شرح می‌دهد تا بتوانید گزارش‌های جامعی از خرابی‌ها را در کنسول Firebase دریافت کنید.

راه‌اندازی Crashlytics نیازمند انجام وظایفی هم در کنسول Firebase و هم در IDE شما است (مانند اضافه کردن فایل پیکربندی Firebase و Crashlytics SDK). برای تکمیل راه‌اندازی، باید یک کرش آزمایشی را مجبور کنید تا اولین گزارش کرش شما را به Firebase ارسال کند.

قبل از اینکه شروع کنی

  1. اگر هنوز فایربیس را به پروژه اپل خود اضافه نکرده‌اید، آن را اضافه کنید . اگر برنامه اپل ندارید، می‌توانید یک برنامه نمونه را دانلود کنید.

  2. توصیه می‌شود : برای اینکه گزارش‌های breadcrumb به طور خودکار اقدامات کاربر را که منجر به خرابی، عدم موفقیت یا رویداد ANR می‌شود، درک کنند، باید Google Analytics در پروژه Firebase خود فعال کنید.

    • اگر پروژه Firebase فعلی شما Google Analytics فعال نکرده است، می‌توانید Google Analytics از تب Integrations فعال کنید. > تنظیمات پروژه در کنسول Firebase .

    • اگر در حال ایجاد یک پروژه جدید Firebase هستید، در طول فرآیند ایجاد پروژه، Google Analytics فعال کنید.

    توجه داشته باشید که گزارش‌های breadcrumb برای همه پلتفرم‌های اپل که توسط Crashlytics پشتیبانی می‌شوند، به جز watchOS، در دسترس هستند.

مرحله ۱ : Crashlytics SDK را به برنامه خود اضافه کنید

برای نصب و مدیریت وابستگی‌های Firebase از Swift Package Manager استفاده کنید.

  1. در Xcode، با باز کردن پروژه برنامه خود، به File > Add Packages بروید.
  2. وقتی از شما خواسته شد، مخزن SDK پلتفرم‌های اپل فایربیس را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. کتابخانه Crashlytics را انتخاب کنید.
  5. برای استفاده از گزارش‌های breadcrumb ، کیت توسعه نرم‌افزار Firebase برای Google Analytics را نیز به برنامه خود اضافه کنید. مطمئن شوید که گوگل آنالیتیکس در پروژه فایربیس شما فعال است .
  6. پرچم -ObjC را به بخش Other Linker Flags در تنظیمات ساخت هدف خود اضافه کنید.
  7. (فقط macOS) در Info.plist خود، کلید NSApplicationCrashOnExceptions را اضافه کنید و آن را روی YES تنظیم کنید.
  8. پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی‌های شما در پس‌زمینه می‌کند.

سپس، ماژول Firebase را پیکربندی کنید:

  1. ماژول Firebase را در App struct یا UIApplicationDelegate خود وارد کنید:

    سویفت

    import Firebase

    هدف-سی

    @import Firebase;
  2. یک نمونه اشتراکی FirebaseApp را پیکربندی کنید، که معمولاً در application(_:didFinishLaunchingWithOptions:) نماینده برنامه شما قرار دارد:

    سویفت

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

    هدف-سی

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

مرحله 2 : Xcode را برای آپلود خودکار فایل‌های dSYM تنظیم کنید

برای تولید گزارش‌های خرابی قابل خواندن توسط انسان، Crashlytics به فایل‌های نماد اشکال‌زدایی (dSYM) پروژه شما نیاز دارد. مراحل زیر نحوه پیکربندی Xcode را برای تولید خودکار dSYM های شما، پردازش آنها و آپلود فایل‌ها در هر زمان ساخت برنامه شرح می‌دهد.

  1. فضای کاری Xcode پروژه خود را باز کنید، سپس فایل پروژه آن را در نوار ناوبری سمت چپ انتخاب کنید.

  2. از لیست TARGETS ، هدف اصلی ساخت خود را انتخاب کنید.

  3. روی تب Build Settings کلیک کنید، سپس مراحل زیر را انجام دهید تا Xcode برای buildهای شما dSYM تولید کند.

    1. روی همه کلیک کنید، سپس debug information format را جستجو کنید.

    2. برای همه انواع ساخت خود ، قالب اطلاعات اشکال‌زدایی را روی DWARF with dSYM File تنظیم کنید.

  4. روی تب Build Phases کلیک کنید، سپس مراحل زیر را انجام دهید تا Xcode بتواند dSYM های شما را پردازش کرده و فایل ها را آپلود کند.

    1. روی > مرحله اجرای اسکریپت جدید کلیک کنید.

      مطمئن شوید که این مرحله‌ی جدید اجرای اسکریپت، آخرین مرحله‌ی ساخت پروژه‌ی شما باشد؛ در غیر این صورت، Crashlytics نمی‌تواند dSYMها را به درستی پردازش کند.

    2. بخش جدید Run Script را باز کنید.

    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)، به گزارش‌های خرابی رفع ابهام‌شده مراجعه کنید.

مرحله ۳ : برای اتمام راه‌اندازی، یک کرش آزمایشی را اعمال کنید

برای تکمیل راه‌اندازی Crashlytics و مشاهده داده‌های اولیه در داشبورد Crashlytics کنسول Firebase ، باید یک crash آزمایشی را اجباری کنید.

  1. کدی را به برنامه خود اضافه کنید که بتوانید از آن برای ایجاد خطای تست استفاده کنید.

    شما می‌توانید از کد زیر برای اضافه کردن دکمه‌ای به برنامه خود استفاده کنید که با فشردن آن، برنامه از کار بیفتد. این دکمه با عنوان "تست کرش" نامگذاری شده است.

    سویفت‌یو‌آی

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

    رابط کاربری

    سویفت

    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]
      }
    }

    هدف-سی

    #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. روی Build کلیک کنید و سپس طرح فعلی را اجرا کنید تا برنامه شما روی یک دستگاه آزمایشی یا شبیه‌ساز ساخته شود.

    2. صبر کنید تا برنامه شما اجرا شود، سپس روی اجرای طرح یا اقدام» کلیک کنید تا نمونه اولیه برنامه شما بسته شود. این نمونه اولیه شامل اشکال‌زدایی است که با Crashlytics تداخل دارد.

  3. برای ارسال اولین گزارش خرابی برنامه‌تان، تست کرش را اجباری کنید:

    1. برنامه خود را از صفحه اصلی دستگاه تست یا شبیه‌ساز خود باز کنید.

    2. در برنامه‌تان، دکمه‌ی «تست کرش» را که با استفاده از کد بالا اضافه کرده‌اید، فشار دهید.

    3. پس از اینکه برنامه شما از کار افتاد، دوباره آن را از Xcode اجرا کنید تا برنامه شما بتواند گزارش خرابی را به Firebase ارسال کند.

  4. برای مشاهده‌ی خرابی آزمایشی خود، به داشبورد Crashlytics در کنسول Firebase بروید.

    اگر کنسول را رفرش کرده‌اید و هنوز بعد از پنج دقیقه خطای آزمایشی را مشاهده نمی‌کنید، گزارش‌گیری اشکال‌زدایی را فعال کنید تا ببینید آیا برنامه شما گزارش‌های خرابی را ارسال می‌کند یا خیر.


و تمام! Crashlytics اکنون برنامه شما را برای یافتن خرابی‌ها رصد می‌کند. برای مشاهده و بررسی تمام گزارش‌ها و آمار خود، به داشبورد Crashlytics مراجعه کنید.

مراحل بعدی