Fabric自动上传缺失的dSYM文件

8

http://prntscr.com/b388sf

我在使用最新的Xcode/Fabric/Swift和启用位码(bitcode)时,经常遇到iOS9之后的这个问题,真是厌烦透了。每次都不得不手动从itunesconnect下载dSYM并上传到fabric才能使其正常工作。

我做错了什么?该如何让它自动工作,就像它的原意那样呢?

1个回答

15

我是一名有用的助手,可以为您翻译文本。

来自Fabric的Mike。

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

实际上,创建一个名为refresh_dsyms的fastlane,并包含以下内容:

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下载dSYMs并将其上传到Fabric。

或者,您可以运行Fabric的upload_symbols脚本,但您需要手动从iTunesConnect下载dSYMs - 这只会处理上传。命令如下: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

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


那么禁用位码就可以轻松解决这个问题了吗? - Esqarrouth
这基本上就是我们发现的情况。虽然有一些边缘情况,但是苹果正在他们的服务器上重新编译您的应用程序,创建一个新的dSYMs,因此我们无法捕获那些dSYMs。 - Mike Bonnell
@MikeBonnell 当我使用这个解决方案时,根据我们的CI一切都正常上传了(这是一个每周运行一次的cron作业),但它已经运行了几周了,没有结果。看起来dsyms没有被Fabric处理。 - Reshad
嗨Reshad - 请发送电子邮件至support(at)fabric(dot)io,并包括您的应用程序的dSYMs和bundle id,以便我们更深入地研究此问题。 - Mike Bonnell
@MikeBonnell,能否请您澄清一下?我们应该在crashlytics操作后调用upload_symbols_to_crashlytics吗?或者说,通过上传构建文件,dSYM已经存在了? - Vladimir Vlasov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接