获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

开始使用 Firebase Crashlytics

本快速入门介绍了如何使用 Firebase Crashlytics SDK 在您的应用中设置 Firebase Crashlytics,以便您可以在 Firebase 控制台中获得全面的崩溃报告。

设置 Crashlytics 需要在 Firebase 控制台和您的 IDE 中执行任务(例如添加 Firebase 配置文件和 Crashlytics SDK)。要完成设置,您需要强制测试崩溃以将您的第一个崩溃报告发送到 Firebase。

在你开始之前

  1. 如果您还没有,请将 Firebase 添加到您的 Apple 项目中。如果您没有 Apple 应用程序,可以下载示例应用程序

  2. 推荐:要获得无崩溃用户、面包屑日志和速度警报等功能,您需要在 Firebase 项目中启用 Google Analytics。

    Crashlytics 支持的所有 Apple 平台(watchOS 除外)都可以利用 Google Analytics 的这些功能。请注意,对于 macOS 和 tvOS 应用,您需要 SDK v8.9.0+。

    • 如果您现有的 Firebase 项目没有启用 Google Analytics,您可以从 Firebase 控制台中 >项目设置集成选项卡启用 Google Analytics。

    • 如果您要创建新的 Firebase 项目,请在项目创建工作流程中启用 Google Analytics。

第 1 步:将 Crashlytics SDK 添加到您的应用

使用 Swift Package Manager 安装和管理 Firebase 依赖项。

  1. 在 Xcode 中,打开您的应用程序项目,导航至File > Add Packages
  2. 出现提示时,添加 Firebase Apple 平台 SDK 存储库:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. 选择 Crashlytics 库。
  5. 为了获得最佳的 Crashlytics 体验,我们建议在您的 Firebase 项目中启用 Google Analytics ,并将适用于 Google Analytics 的 Firebase SDK 添加到您的应用程序中。您可以选择没有 IDFA 集合或有 IDFA 集合的库。
  6. 完成后,Xcode 将自动开始在后台解析和下载您的依赖项。

接下来,配置 Firebase 模块:

  1. 在您的App结构或UIApplicationDelegate中导入 Firebase 模块:

    迅速

    import Firebase

    目标-C

    @import Firebase;
  2. 配置一个FirebaseApp共享实例,通常在您的应用委托的application(_:didFinishLaunchingWithOptions:)方法中:

    迅速

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()
    

    目标-C

    // Use the Firebase library to configure APIs.
    [FIRApp configure];
    

第 2 步:设置 Xcode 以自动上传 dSYM 文件

要生成人类可读的崩溃报告,Crashlytics 需要您项目的调试符号 (dSYM) 文件。以下步骤描述了如何配置 Xcode 以在您构建应用程序时自动生成、处理它们并上传文件。

  1. 打开项目的 Xcode 工作区,然后在左侧导航器中选择其项目文件。

  2. TARGETS列表中,选择您的主要构建目标。

  3. 单击Build Settings选项卡,然后完成以下步骤,以便 Xcode 为您的构建生成 dSYM。

    1. 单击全部,然后搜索debug information format

    2. 将所有构建类型的调试信息格式设置为DWARF with dSYM File

  4. 单击Build Phases选项卡,然后完成以下步骤,以便 Xcode 可以处理您的 dSYM 并上传文件。

    1. 单击 >新建运行脚本阶段

      确保这个新的运行脚本阶段是您项目的最后一个构建阶段;否则,Crashlytics 无法正确处理 dSYM。

    2. 展开新的运行脚本部分。

    3. 在脚本字段中(位于Shell标签下),添加以下运行脚本。

      此脚本处理项目的 dSYM 文件并将文件上传到 Crashlytics。

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. 输入文件部分,添加以下文件位置的路径:

      • 项目的dSYM 文件的位置:

        ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

        提供项目的 dSYM 文件的位置使 Crashlytics 能够更快地处理大型应用程序的 dSYM。

      • 项目构建的Info.plist文件的位置:

        $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

        提供项目构建的Info.plist文件的位置使 Crashlytics 能够将应用程序版本与 dSYM 相关联。

有关 dSYM 文件和 Crashlytics(包括如何手动上传 dSYM 文件)的更多详细信息,请访问获取去混淆的崩溃报告

第 3 步:强制测试崩溃以完成设置

要完成 Crashlytics 的设置并在 Firebase 控制台的 Crashlytics 仪表板中查看初始数据,您需要强制测试崩溃。

  1. 将可用于强制测试崩溃的代码添加到您的应用程序。

    您可以使用以下代码向您的应用程序添加一个按钮,按下该按钮会导致崩溃。该按钮标记为“测试崩溃”。

    斯威夫特用户界面

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

    UI工具包

    迅速

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

    目标-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 中构建并运行您的应用程序。

    1. 单击 Build 然后运行当前方案以在测试设备或模拟器上构建您的应用程序。

    2. 等待您的应用程序运行,然后单击运行方案或操作以关闭您的应用程序的初始实例。这个初始实例包括干扰 Crashlytics 的调试器。

  3. 强制测试崩溃以发送您的应用程序的第一个崩溃报告:

    1. 从测试设备或模拟器的主屏幕打开您的应用程序。

    2. 在您的应用中,按下您使用上述代码添加的“测试崩溃”按钮。

    3. 在您的应用程序崩溃后,从 Xcode 再次运行它,以便您的应用程序可以将崩溃报告发送到 Firebase。

  4. 转到 Firebase 控制台的Crashlytics 仪表板以查看您的测试崩溃。

    如果您刷新了控制台,但五分钟后仍未看到测试崩溃,请启用调试日志记录以查看您的应用程序是否正在发送崩溃报告。


就是这样! Crashlytics 现在正在监控您的应用程序是否发生崩溃。访问Crashlytics 仪表板以查看和调查您的所有报告和统计信息。

下一步