با 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 بسازید و اجرا کنید که اشکال زدای Xcode قطع شده است.

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

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

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

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

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

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

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

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


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

مراحل بعدی

،


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

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

قبل از شروع

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

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

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

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

    توجه داشته باشید که سیاهههای مربوط به خرده فروش برای کلیه سیستم عامل های اپل که توسط Crashlytics به جز WatchOS پشتیبانی می شوند ، در دسترس است.

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

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

  1. در Xcode ، با باز کردن پروژه برنامه خود ، به پرونده> اضافه کردن بسته ها بروید.
  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 را به بخش دیگر Flags Flags از تنظیمات ساخت هدف خود اضافه کنید.
  7. . 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 را برای تولید خودکار DSYMS ، پردازش آنها و بارگذاری پرونده ها در هر زمان که برنامه خود را بارگذاری کنید ، شرح می دهد.

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

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

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

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

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

  4. روی زبانه Build Fases کلیک کنید ، سپس مراحل زیر را انجام دهید تا XCode بتواند DSYMS شما را پردازش کرده و پرونده ها را بارگذاری کند.

    1. > New Run Script Phase کلیک کنید.

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

    2. بخش جدید اسکریپت Run را گسترش دهید.

    3. در قسمت Script (واقع در زیر برچسب 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) ، به گزارش های خرابی Deobfaccated مراجعه کنید.

مرحله 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 بسازید و اجرا کنید که اشکال زدای Xcode قطع شده است.

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

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

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

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

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

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

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

    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.


و بس! Crashlytics is now monitoring your app for crashes. Visit the Crashlytics dashboard to view and investigate all your reports and statistics.

مراحل بعدی