開始使用 Firebase Crashlytics

本快速入門導覽課程說明如何使用 Firebase Crashlytics SDK,在應用程式中設定 Firebase Crashlytics,方便您在 Firebase 控制台中取得完整的當機報告。

設定 Crashlytics 時,必須同時在 Firebase 控制台和 IDE 中完成工作 (例如新增 Firebase 設定檔和 Crashlytics SDK),如要完成設定,您必須強制執行測試當機問題,將第一份當機報告傳送至 Firebase。

事前準備

  1. 如果您尚未新增 Firebase 至 Apple 專案,請先完成這項操作。如果沒有 Apple 應用程式,可以下載範例應用程式

  2. 建議做法:如要自動取得導覽標記記錄,瞭解引發當機、不嚴重或 ANR 事件的使用者動作,您必須在 Firebase 專案中啟用 Google Analytics (分析)。

    • 如果現有的 Firebase 專案尚未啟用 Google Analytics (分析),可以前往 Firebase 控制台,在 >「專案設定」中,透過「Integrations」分頁啟用 Google Analytics (分析)。

    • 如果要建立新的 Firebase 專案,請在專案建立工作流程中啟用 Google Analytics (分析)。

    請注意,除了 watchOS 以外,Crashlytics 支援的所有 Apple 平台都能使用導覽標記記錄。

步驟 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 旗標新增至目標建構設定中的「Other Linker Flags」區段。
  7. (僅限 macOS)Info.plist 中新增 NSApplicationCrashOnExceptions 鍵,並將其設為 YES
  8. 完成後,Xcode 就會自動開始在背景中解析並下載依附元件。

接著,設定 Firebase 模組:

  1. 將 Firebase 模組匯入 App 結構或 UIApplicationDelegate 中:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. 設定 FirebaseApp 共用例項,通常位於應用程式委派的 application(_:didFinishLaunchingWithOptions:) 方法中:

    Swift

    // 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、處理 dSYM,以及在每次建構應用程式時上傳檔案。

  1. 開啟專案的 Xcode 工作區,然後在左側導覽器中選取其專案檔案。

  2. 在「TARGETS」(目標) 清單中,選取主要建構目標。

  3. 按一下「Build Settings」分頁標籤,然後完成下列步驟,讓 Xcode 為您的版本產生 dSYM。

    1. 按一下「全部」,然後搜尋 debug information format

    2. 將所有建構類型的「Debug Information Format」設為 DWARF with dSYM File

  4. 按一下「Build Phases」分頁標籤,然後完成下列步驟,以便 Xcode 處理 dSYM 並上傳檔案。

    1. 依序點選 >「New Run Script 階段」

      請確定這個新的「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)

如要進一步瞭解 dSYM 檔案和 Crashlytics (包括如何手動上傳 dSYM 檔案),請參閱「取得經去模糊化的當機報告」。

步驟 3:強制執行測試當機以完成設定

如要完成 Crashlytics 設定,並在 Firebase 控制台的 Crashlytics 資訊主頁中查看初始資料,您必須強制執行測試當機。

  1. 在應用程式中加入程式碼,以便強制測試當機。

    您可以使用以下程式碼,在應用程式中新增按鈕,以便在按下時造成當機。這個按鈕標示為「Test Crash」

    SwiftUI

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

    UIKit

    Swift

    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 and run the current scheme」(建構目前的配置),然後在測試裝置或模擬器上建構應用程式。

    2. 等待應用程式執行完畢,然後按一下 「Stop running the scheme or action」(停止執行配置或動作),關閉應用程式的初始執行個體。這個初始執行個體中包含會幹擾 Crashlytics 的偵錯工具。

  3. 強制測試當機,以便傳送應用程式的第一份當機報告:

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

    2. 在應用程式中,按下使用上述程式碼新增的「Test Crash」按鈕。

    3. 應用程式當機後,請透過 Xcode 再次執行,讓應用程式能夠將當機報告傳送至 Firebase。

  4. 前往 Firebase 控制台的 Crashlytics 資訊主頁,查看測試當機情形。

    如果您已重新整理主控台,但五分鐘後仍未看到測試當機情形,請啟用偵錯記錄,查看應用程式是否正在傳送當機報告。


大功告成!Crashlytics 正在監控應用程式的當機情況。請前往 Crashlytics 資訊主頁,查看及調查所有報表和統計資料。

後續步驟