此快速入门介绍了如何使用 Firebase Crashlytics SDK 在应用中设置 Firebase Crashlytics,以便您可以在 Firebase 控制台中获得全面的崩溃报告。
设置 Crashlytics 需要在 Firebase 控制台和 IDE 中分别执行一些操作(例如添加 Firebase 配置文件和 Crashlytics SDK)。为了完成设置,您需要强制造成一次测试崩溃,以便向 Firebase 发送您的第一个崩溃报告。
准备工作
- 将 Firebase 添加到您的 Apple 项目(如果尚未添加)。如果您没有 Apple 应用,可以下载一个示例应用。 
- 建议:要自动获取路径日志以了解导致崩溃事件、非严重事件或 ANR 事件的用户操作,您需要在 Firebase 项目中启用 Google Analytics。 - 如果您的现有 Firebase 项目未启用 Google Analytics,您可以访问 Firebase 控制台,依次点击 - >“项目设置” ,然后在集成标签页中启用 Google Analytics。
- 如果您要创建新的 Firebase 项目,请在项目创建工作流中启用 Google Analytics。 
 - 请注意,路径日志适用于 Crashlytics 支持的所有 Apple 平台(watchOS 除外)。 
第 1 步:将 Crashlytics SDK 添加到您的应用
使用 Swift Package Manager 安装和管理 Firebase 依赖项。
- 在 Xcode 中打开您的应用项目,依次点击 File(文件)> Add Packages(添加软件包)。
- 出现提示时,添加 Firebase Apple 平台 SDK 代码库:
- 选择 Crashlytics 库。
- 如需利用面包屑导航日志,还可以将 Firebase SDK for Google Analytics 添加到您的应用中。确保您的 Firebase 项目中启用了 Google Analytics。
- 将 -ObjC标志添加到目标 build 设置的“其他链接器标志”部分。
- (仅限 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、处理 dSYM 并上传文件。
- 打开项目的 Xcode 工作区,然后在左侧导航器中选择其项目文件。 
- 从 TARGETS(目标)列表中,选择您的主要 build 目标。 
- 点击 Build Settings(构建设置)标签页,然后完成以下步骤,以便 Xcode 为您的 build 生成 dSYM。 - 点击 All(全部),然后搜索 - debug information format。
- 对于所有 build 类型,将 Debug Information Format(调试信息格式)设置为 - DWARF with dSYM File。
 
- 点击 Build Phases(构建阶段)标签页,然后完成以下步骤,以便 Xcode 可以处理您的 dSYM 并上传文件。 - 依次点击 > New Run Script Phase(新建运行脚本阶段)。 - 确保这个新运行脚本阶段是项目的最后一个构建阶段;否则 Crashlytics 将无法正确处理 dSYM。 
- 展开新的“Run Script”(运行脚本)部分。 
- 在脚本字段(位于 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 信息中心内查看初始数据,您需要强制造成一次测试崩溃。
- 向应用添加可用于强制造成测试崩溃的代码。 - 您可以使用以下代码向应用添加一个按下即会导致崩溃的按钮。该按钮标有“测试崩溃”。 - 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 的调试程序。 
 
- 强制造成测试崩溃以发送应用的第一个崩溃报告: - 在测试设备或模拟器的主屏幕中打开您的应用。 
- 在您的应用中,按下您使用上述代码添加的“测试崩溃”按钮。 
- 应用崩溃后,在 Xcode 中再次运行该应用,以便它可以将崩溃报告发送到 Firebase。 
 
- 前往 Firebase 控制台的 Crashlytics 信息中心,查看您的测试崩溃报告。 - 如果您已刷新控制台,但在五分钟后仍未看到测试崩溃报告,请启用调试日志记录,查看您的应用是否正在发送崩溃报告。 
大功告成!Crashlytics 现在会监控您的应用是否发生崩溃。您可以访问 Crashlytics 信息中心以查看和调查所有报告和统计信息。
后续步骤
- 您可以通过添加自选式报告、日志、键以及非严重错误跟踪来自定义崩溃报告设置。