| 選取平台: | iOS+ Android Android NDK Flutter Unity |
本快速入門導覽課程說明如何使用 Firebase Crashlytics SDK 在應用程式中設定 Firebase Crashlytics,以便在 Firebase 控制台中取得完整的當機報告。
設定 Crashlytics 時,您需要在 Firebase 控制台和 IDE 中執行作業 (例如新增 Firebase 設定檔和 Crashlytics SDK)。如要完成設定,您需要強制測試當機,將第一份當機報告傳送至 Firebase。
事前準備
如果尚未新增,請將 Firebase 新增至 Apple 專案。如果沒有 Apple 應用程式,可以下載範例應用程式。
建議:如要自動取得導覽標記記錄,瞭解引發當機或一般錯誤事件的使用者動作,請在 Firebase 專案中啟用 Google Analytics。
如果現有的 Firebase 專案未啟用 Google Analytics,您可以在 Firebase 控制台的「
」>「專案設定」 中,前往「整合」分頁標籤啟用 Google Analytics。如果您要建立新的 Firebase 專案,請在專案建立工作流程中啟用 Google Analytics。
請注意,除了 watchOS 之外,Crashlytics 支援的所有 Apple 平台都提供麵包屑記錄。
步驟 1:在應用程式中加入 Crashlytics SDK
使用 Swift Package Manager 安裝及管理 Firebase 依附元件。
- 在 Xcode 中保持開啟應用程式專案,然後依序點選「File」(檔案) 和「Add Packages」(新增 Package)。
- 系統提示時,請新增 Firebase Apple 平台 SDK 存放區:
- 選擇 Crashlytics 程式庫。
- 如要使用路徑記錄,請將 Firebase SDK for Google Analytics 新增至應用程式。請務必在 Firebase 專案中啟用 Google Analytics。
- 將
-ObjC標記加進目標建構設定的「Other Linker Flags」部分。 - (僅限 macOS) 在
Info.plist中新增金鑰NSApplicationCrashOnExceptions,並設為YES。 - 完成後,Xcode 會自動開始在背景中解析並下載依附元件。
https://github.com/firebase/firebase-ios-sdk.git
接著,請設定 Firebase 模組:
在
App結構體或UIApplicationDelegate中匯入 Firebase 模組:Swift
import Firebase
Objective-C
@import Firebase;
設定
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、處理這些檔案,並上傳。
開啟專案的 Xcode 工作區,然後在左側導覽器中選取專案檔案。
從「TARGETS」清單中,選取主要建構目標。
按一下「Build Settings」分頁標籤,然後完成下列步驟,讓 Xcode 為您的建構作業產生 dSYM。
按一下「全部」,然後搜尋
debug information format。將所有建構類型的「偵錯資訊格式」設為
DWARF with dSYM File。
按一下「Build Phases」分頁標籤,然後完成下列步驟,讓 Xcode 處理 dSYM 並上傳檔案。
依序點選 >「New Run Script Phase」。
請務必將這個新的「執行指令碼」階段設為專案的最後一個建構階段,否則 Crashlytics 無法正確處理 dSYM。
展開新的「執行指令碼」部分。
在指令碼欄位 (位於「Shell」標籤下方) 中,新增下列執行指令碼。
這個指令碼會處理專案的 dSYM 檔案,並將檔案上傳至 Crashlytics。
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"在「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 檔案),請參閱「取得經過去混淆處理的當機報告」。
步驟 3:強制測試當機以完成設定
您需要強制測試當機,才能完成設定 Crashlytics,並在 Firebase 控制台的 Crashlytics 資訊主頁中看見初始資料。
在應用程式中加入程式碼,強制測試當機。
您可以使用下列程式碼,在應用程式中新增按鈕,按下按鈕時會導致當機。按鈕標示為「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
在 Xcode 中建構及執行應用程式,並中斷 Xcode 偵錯工具連線。
按一下「Build and then run the current scheme」,在測試裝置或模擬器上建構應用程式。
等待應用程式執行完畢,然後按一下「停止執行配置或動作」,關閉應用程式的初始執行個體。這個初始執行個體包含會干擾 Crashlytics 的偵錯工具。
強制測試當機,以便傳送應用程式的第一份當機報告:
在測試裝置或模擬器的主畫面開啟應用程式。
在應用程式中,按下您使用上述程式碼新增的「Test Crash」按鈕。
應用程式當機後,請從 Xcode 再次執行,讓應用程式將當機報告傳送至 Firebase。
前往 Firebase 控制台的Crashlytics 資訊主頁,查看測試當機情形。
如果重新整理控制台後,您在五分鐘內仍未看到測試當機,請啟用偵錯記錄,確認應用程式是否傳送當機報告。
這樣就完成了!「Crashlytics」現在會監控應用程式是否當機。 前往 Crashlytics 資訊主頁,查看及調查所有報表和統計資料。
後續步驟
自訂當機報告設定,加入選擇加入回報、記錄、鍵,以及追蹤非致命錯誤。
與 Google Play 整合,直接在 Crashlytics 資訊主頁中依 Google Play 管道篩選 Android 應用程式的當機報告。這樣一來,您就能更專注於特定建構版本。