【问题标题】:iOS - How Crashlytics handles missing dSYMSsiOS - Crashlytics 如何处理丢失的 dSYMS
【发布时间】:2017-05-11 10:02:28
【问题描述】:

我有一个关于 dSYMS 以及 Crashlytics 如何处理它们的问题。

我的应用程序包含不同的目标,由于Watchkit AppWatchkit App Extension 目标,整个项目使用bitcode enabled 编译。

然后我按照Missing dSYMs Documentation 手动上传我丢失的 dSYM。 它起作用了,所需的缺失 dSYM 现在在我的仪表板上显示为条带状。

但我想知道,它究竟是如何工作的?我的应用程序的这个版本在 AppStore 上架了 1 个月。

我是否只会从我上传 dSYM 的今天开始收到崩溃报告? 我应该为每个版本手动上传吗?

我不是很了解这个过程。

【问题讨论】:

    标签: crashlytics google-fabric


    【解决方案1】:

    来自 Fabric 的 Mike。

    dSYM 包含为您的应用提供完全符号化的堆栈跟踪所需的符号。当您在 Xcode 中本地构建时,dSYM 位于您的本地计算机上,因此 Fabric run script build phase 可以上传它们。

    启用 Bitcode 后,Apple 会在其服务器上重新编译您的应用,从而创建新的 dSYM。由于它发生在他们的服务上,Fabric 无法自动上传这些。 Apple 确实通过 Xcode 或 iTunesConnect 提供了 dSYM。由于我们无法访问这些 dSYM(我们需要您的 Apple 开发人员凭据,而我们不想拥有它们),因此您确实需要从 Apple 获取 dSYM,并通过 Apple 或 Testflight 将它们上传到 Fabric 中。您还可以使用upload-symbols 脚本批量上传它们。 upload-symbols 脚本也适用于 CI 机器。

    当 Fabric 发生崩溃时,我们会查看是否具有象征崩溃所需的 dSYM。如果我们不这样做,我们将通过仪表板和您的 Fabric 应用程序设置页面提醒您。如果崩溃缺少 dSYM,我们会将其存储 7 天。如果此时没有上传丢失的 dSYM,那么我们将丢弃崩溃而不处理它。如果上传了丢失的 dSYM,则崩溃会排队等待处理,处理和显示可能需要几分钟到几小时。

    话虽如此,处理此问题的最佳方法是使用 upload-symbols 脚本向我们获取符号,即使还没有报告丢失的 dSYM,以便我们在发生崩溃时获得符号。如果我们在报告崩溃时有 dSYM,则崩溃将在几秒钟内(平均)得到处理。

    另一种方法是使用fastlane's refresh_dsyms 命令获取dSYM 并上传它们。

    【讨论】:

    • 感谢您的回答,它提供了我所期望的一切。只是一件事,你认为我可以在 Jenkins 中使用上传符号脚本吗?我们有一个自动化的持续集成系统来存档和导出我们在 iTunesConnect 上的构建。
    • 很乐意提供帮助,是的,它应该适用于 CI。如果任何失败,脚本将输出错误,因此您需要查看构建日志。
    • 完美。谢谢你,迈克,我会测试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2013-01-19
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多