此快速入门介绍了如何使用 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)
如需详细了解 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 信息中心以查看和调查所有报告和统计信息。
后续步骤
- 您可以通过添加自选式报告、日志、键以及非严重错误跟踪来自定义崩溃报告设置。