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


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

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

قبل از شروع

  1. اگر قبلاً این کار را نکرده اید، Firebase را به پروژه اپل خود اضافه کنید . اگر برنامه اپل ندارید، می توانید یک برنامه نمونه دانلود کنید.

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

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

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

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

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

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

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

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

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

    سویفت

    import Firebase

    هدف-C

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

    سویفت

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

    هدف-C

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

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

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

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

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

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

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

    2. فرمت اطلاعات اشکال زدایی را DWARF with dSYM File تنظیم کنید.

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

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

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

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

    3. در قسمت اسکریپت (که در زیر برچسب Shell قرار دارد)، اسکریپت اجرای زیر را اضافه کنید.

      این اسکریپت فایل های dSYM پروژه شما را پردازش می کند و فایل ها را در Crashlytics آپلود می کند.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. در بخش Input Files ، مسیرهای مکان فایل های زیر را اضافه کنید:

      ${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)، از دریافت گزارش‌های خرابی deobfuscated دیدن کنید.

مرحله 3 : یک تصادف تست را برای پایان دادن به تنظیمات مجبور کنید

برای به پایان رساندن تنظیم Crashlytics و دیدن داده های اولیه در داشبورد Crashlytics کنسول Firebase ، باید یک تصادف آزمایش را مجبور کنید.

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

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

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

    هدف-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 با استفاده از Debugger Xcode جدا کنید و اجرا کنید.

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

    2. صبر کنید تا برنامه شما در حال اجرا باشد ، سپس برای بستن نمونه اولیه برنامه خود ، Stop Rund the Scheme یا Action کلیک کنید. این نمونه اولیه شامل اشکال زدایی است که در Crashlytics دخالت می کند.

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

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

    2. در برنامه خود ، دکمه "تست تصادف" را که با استفاده از کد بالا اضافه کردید ، فشار دهید.

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

  4. برای دیدن تصادف تست خود به داشبورد Crashlytics کنسول Firebase بروید.

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


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

مراحل بعدی