Firebase Crashlytics 入門

本快速入門介紹如何使用 Firebase Crashlytics SDK 在您的應用程式中設定 Firebase Crashlytics,以便您可以在 Firebase 控制台中取得全面的崩潰報告。

設定 Crashlytics 需要在 Firebase 控制台和 IDE 中執行任務(例如新增 Firebase 設定檔和 Crashlytics SDK)。要完成設置,您需要強制測試崩潰,以將第一個崩潰報告傳送到 Firebase。

在你開始之前

  1. 如果您尚未將 Firebase 新增至您的 Apple 專案中,請將其新增至您的 Apple 專案。如果您沒有 Apple 應用程序,可以下載範例應用程式

  2. 建議:要自動取得麵包屑日誌以了解導致崩潰、非致命或 ANR 事件的使用者操作,您需要在 Firebase 專案中啟用 Google Analytics。

    • 如果您現有的 Firebase 專案未啟用 Google Analytics,您可以從您的 Firebase 專案的整合標籤中啟用 Google Analytics。 Firebase 控制台中的 >專案設定

    • 如果您要建立新的 Firebase 項目,請在專案建立工作流程期間啟用 Google Analytics。

    請注意,麵包屑日誌適用於 Crashlytics 支援的所有 Apple 平台(watchOS 除外)。

步驟 1 :將 Crashlytics SDK 添加到您的應用程式

使用 Swift Package Manager 安裝和管理 Firebase 相依性。

  1. 在 Xcode 中,開啟應用程式項目,導覽至File > Add Packages
  2. 出現提示時,新增 Firebase Apple 平台 SDK 儲存庫:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. 選擇 Crashlytics 函式庫。
  5. 若要利用麵包屑日誌,也要將適用於 Google Analytics 的 Firebase SDK 加入您的應用程式。確保您的 Firebase 專案中啟用了 Google Analytics
  6. -ObjC標誌新增至目標建置設定的「其他連結器標誌」部分。
  7. (僅限 macOS)Info.plist中,新增鍵NSApplicationCrashOnExceptions並將其設為YES
  8. 完成後,Xcode 將自動開始在背景解析並下載您的依賴項。

接下來,配置 Firebase 模組:

  1. 在您的App架構或UIApplicationDelegate中匯入 Firebase 模組:

    迅速

    import Firebase

    Objective-C

    @import Firebase;
  2. 配置FirebaseApp共享實例,通常在應用程式委託的application(_:didFinishLaunchingWithOptions:)方法中:

    迅速

    // 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偵錯資訊格式設為 DWARF。

  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)

有關 dSYM 檔案和 Crashlytics 的更多詳細資訊(包括如何手動上傳 dSYM 檔案),請造訪以取得反混淆的崩潰報告

第 3 步:強制測試崩潰以完成設置

要完成 Crashlytics 的設定並在 Firebase 控制台的 Crashlytics 儀表板中查看初始數據,您需要強制測試崩潰。

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

    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. 按一下 Build,然後執行目前方案以在測試裝置或模擬器上建置您的應用程式。

    2. 等待您的應用程式運行,然後按一下 」停止運行該方案或操作以關閉應用程式的初始實例。此初始實例包含幹擾 Crashlytics 的偵錯器。

  3. 強制測試崩潰以發送應用程式的第一個崩潰報告:

    1. 從測試設備或模擬器的主畫面開啟您的應用程式。

    2. 在您的應用程式中,按您使用上面的程式碼新增的「測試崩潰」按鈕。

    3. 您的應用程式崩潰後,從 Xcode 再次運行它,以便您的應用程式可以將崩潰報告發送到 Firebase。

  4. 前往 Firebase 控制台的Crashlytics 儀表板以查看測試當機。

    如果刷新控制台後五分鐘後仍未看到測試崩潰,請啟用偵錯日誌記錄以查看您的應用程式是否正在傳送崩潰報告。


就是這樣! Crashlytics 現在正在監控您的應用程式是否崩潰。造訪Crashlytics 儀表板以查看和調查您的所有報告和統計資料。

下一步

  • 透過新增選擇加入報告、日誌、金鑰和非致命錯誤追蹤來自訂崩潰報告設定