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

Step 3 : Force a test crash to finish setup

To finish setting up Crashlytics and see initial data in the Crashlytics dashboard of the Firebase console, you need to force a test crash.

  1. Add code to your app that you can use to force a test crash.

    You can use the following code to add a button to your app that, when pressed, causes a crash. The button is labeled "Test Crash".

    SwiftUI

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

    UIKit

    سویفت

    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. Build and run your app in Xcode with the Xcode debugger disconnected.

    1. Click Build and then run the current scheme to build your app on a test device or simulator.

    2. Wait until your app is running, then click Stop running the scheme or action to close the initial instance of your app. This initial instance included the debugger that interferes with Crashlytics .

  3. Force the test crash in order to send your app's first crash report:

    1. Open your app from the home screen of your test device or simulator.

    2. In your app, press the "Test Crash" button that you added using the code above.

    3. After your app crashes, run it again from Xcode so that your app can send the crash report to Firebase.

  4. Go to the Crashlytics dashboard of the Firebase console to see your test crash.

    If you've refreshed the console and you're still not seeing the test crash after five minutes, enable debug logging to see if your app is sending crash reports.


And that's it! Crashlytics is now monitoring your app for crashes. Visit the Crashlytics dashboard to view and investigate all your reports and statistics.

مراحل بعدی