首页 文章

Crashlytics不显示崩溃

提问于
浏览
19

我刚刚使用this官方指令安装了Crashlitycs .

我为Debug和Release以及禁用的Bitcode设置了调试信息格式为“DWARF with dSYM File”(有些人写道它可以提供帮助):

enter image description here

AppDelegate中:

Fabric.sharedSDK().debug = true
Fabric.with([Crashlytics.self])

为了模拟我使用的崩溃

Crashlytics.sharedInstance().crash()

var ggg: Int!
print(ggg)

Crashlitics收集有关会话的一些信息 . 例如,它更新包版本信息:

enter image description here

所以与Crashlitics的联系起作用 . 但崩溃信息为空:

enter image description here

我正在使用XCode 8和iOS 9/10 . 我做错了什么?

EDIT:

我在没有XCode调试器连接的模拟器和设备上测试过它(即从sumulator / device屏幕启动)

最后,我在崩溃后7-8小时收到了一些Crashlytics报告 . 我之前期待它们,因为根据documentation

几分钟后,您应该会看到Fabric Dashboard上出现崩溃 .

但是我没有收到我正在等待的所有崩溃 . 在我的实验中,我尝试了不同的方法来初始化Crashlytics:

Fabric.with([Crashlytics.self])
and
Fabric.with([Crashlytics.self()])

可能是原因吗?我也发现了类似的未答复question .

4 回答

  • 1

    检查以下条款,

    • 确保Crashlytics SDK系列在所有其他第三方SDK系列之后 . (它需要是你的appDidFinishLaunching方法中调用的最后一个 . )

    • 强制崩溃,然后重新启动应用程序 . 必须断开Xcode以阻止其拦截崩溃报告 . 要断开Xcode,请按照说明here .

    • 如果您正在使用[Crashlytics sharedInstance]崩溃];测试崩溃,确保它不在appDidFinishLaunching方法中 .

    这些已在支持部分中提及,以下是其他部分 -

    • 签入组织 - >您的应用程序 - >缺少dSYM,是否显示任何缺少的dSYM文件

    enter image description here

    如果是,则执行以下步骤

    • 右键单击您的存档 - >在Finder中显示 - >右键单击文件,然后单击显示包内容

    • 右键单击dSYM文件 - >显示包内容 - >目录 - >资源 - > DWARF(在终端中打开)

    • 运行命令dwarfdump --uuid "file name you saw there in dwarf folder"

    enter image description here

    这将显示所有关联的UUID,如果任何列出的UUID与缺少的dSYM id中提到的UUID匹配,则只压缩dSYM文件夹并将其上载到crashlytics Missing dSYM段 .

    此步骤很重要,因为有时我们从组织器中提取的dSYM文件不包含正确的UUID . 上传错误后我们等待更新 . 因此,最好确保上传正确的dSYM文件 .

    除了上述内容之外,构建设置中的Bitcode属性和调试信息格式也会影响崩溃报告 .

  • 24

    您需要运行应用程序,但不能运行Xcode .

    如果您使用的是设备,只需启动未连接USB的应用程序即可 . 如果您使用的是模拟器,请停止从Xcode运行该应用程序 . 然后通过鼠标点击再次打开它 .

    接下来,导航到将调用 Crashlytics.sharedInstance().crash()buttonPressfunction .

    然后在崩溃后再次使用 reopen 应用程序 . (如果需要,可以将其连接到控制台)此步骤非常重要,因为在应用程序终止之前,crashlytics会保存崩溃报告 . 下次打开应用程序时,它会将报告发布到crashlytics .

    文档here实际上也解释了故障排除问题 .

  • 7

    崩溃而不上传的另一个潜在原因是在不调用完成处理程序的情况下实现Crashlytics委托:

    // MARK: CrashlyitcsDelegate
    func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
        // Last launch we crashed!
        }
    }
    

    相反,它应该是这样的:

    // MARK: CrashlyitcsDelegate
    func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
        // Last launch we crashed!
             completionHandler(true)
        }
    }
    
  • 1

    对于Debug和Release,请仔细检查您的调试信息格式为“DWARF with dSYM File”的Build Settings

相关问题