Fabric 自动上传缺失的 dSYM

Posted

技术标签:

【中文标题】Fabric 自动上传缺失的 dSYM【英文标题】:Fabric automatically upload missing dSYMs 【发布时间】:2016-05-12 17:20:38 【问题描述】:

http://prntscr.com/b388sf

ios9 之后我经常遇到这个问题并且对此感到厌烦。我正在使用启用了位码的最新 Xcode/Fabric/Swift。我必须从 itunesconnect 手动下载 dSYM 并将其上传到 fabric 以使其工作。

我做错了什么,我怎样才能让它像预期的那样自动工作?

【问题讨论】:

【参考方案1】:

来自 Fabric 的 Mike。

使用 Bitcode 肯定会使这个问题更频繁地发生,但是有几种方法可以处理它。您可以通过运行fastlane refresh_dsyms 使用Fastlane.tools 自动下载dSYM,这将从iTunesConnect 下载dSYM,然后将它们上传到Fabric。 Fastlane 的refresh_dsyms 参考在这里:https://krausefx.com/blog/download-dsym-symbolication-files-from-itunes-connect-for-bitcode-ios-apps

在实践中,创建一个名为:refresh_dsyms 的快速通道,使用以下内容:

lane :refresh_dsyms do
  download_dsyms                  # Download dSYM files from iTC
  upload_symbols_to_crashlytics   # Upload them to Crashlytics
  clean_build_artifacts           # Delete the local dSYM files
end

这将从 iTunesConnect 下载 dSYM 并将它们上传到 Fabric。

或者,您可以运行 Fabric upload_symbols 脚本,但您需要从 iTunesConnect 手动下载 dSYM - 这只会处理上传。命令将是:find <directory-to-search-for-dsyms> -name "*.dSYM" | xargs -I \\ /path/to/upload-symbols -a <api-key> -p <platform> \\

upload_symbols 的参考在这里:https://docs.fabric.io/ios/crashlytics/missing-dsyms.html#upload-symbols-script 和

由于发生这种情况,Apple 会在启用 Bitcode 时重新编译您的应用程序,因此 dSYM 仅在 Apple 的服务器上生成,这会阻止 Fabric 自动上传它们。

【讨论】:

所以只禁用位码就可以轻松解决这个问题? 这就是我们所发现的。有一些边缘情况,但 Apple 正在他们的服务器上重新编译您的应用程序,创建新的 dSYM,因此我们无法捕获这些 dSYM。 @MikeBonnell 当我使用这个解决方案时,它根据我们的 CI 工作正常并且所有内容都已上传。 (它是一个每周运行一次的 cron 作业)但它现在运行了几个星期并且没有结果。 Fabric 似乎没有处理 dsym。 Hey Reshad - 请发送电子邮件至 support(at)fabric(dot)io 并附上您应用的 dSYM 和 bundle id,以便我们进一步调查。 @MikeBonnell 你能澄清一下吗?我们应该在crashlytics 操作之后调用upload_symbols_to_crashlytics 吗?还是 dSYM 已经在上传构建?

以上是关于Fabric 自动上传缺失的 dSYM的主要内容,如果未能解决你的问题,请参考以下文章

Crashlytics 自动上传 dsym 文件

使用 Firebase/Crashlytics 更改 Fabric 和 Crashlytics pod 以上传缺少的必需 dSYM

Firebase crashlytics 自动上传 dsym

上传 1 个缺失的 DSYM 以处理 Firebase 崩溃报告中的 18 次崩溃

崩溃报告没有进入Crashlytics / fabric。显示警告:“看起来我们缺少dSYM来处理以下版本的崩溃。”

Fabric Crashlytics 到 Firebase Crashlytics 迁移询问 dSYMs 文件