如何在Xcode构建过程中运行上传符号来上传dSYM?

时间:2019-02-07 15:52:14

标签: ios swift xcode crashlytics dsym

好,所以我尝试自动上传dSYM。 我正在遵循此官方文档中的说明: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports

我被困在“手动运行上传符号脚本”部分。 有3种上传dSYM的方法。我正在尝试遵循第一个-在构建过程中包括以下内容: find ${DWARF_DSYM_FOLDER_PATH} -name "*.dSYM" | xargs -I \{\} ${PODS_ROOT}/Fabric/upload-symbols -gsp MyProjectFolder/GoogleService-Info.plist -p ios \{\}

现在我已经尝试了以下方法:

  1. 我去Project-> Scheme-> Edit Scheme。
  2. 我点击Build->发布操作
  3. 我从小开始-我只想在构建过程中显示“ echo”: dSYMs
  4. 我运行产品->构建
  5. 我转到查看->导航器->显示报告导航器
  6. 没有迹象表明运行了回声。

该脚本放在哪里?

如何查找它是否正在运行?

3 个答案:

答案 0 :(得分:4)

TL; DR: 在构建时生成的dSYMS在“启用位码”时代不再具有价值,您需要从Apple下载dSYM并将其上传到您的第三方崩溃报告器Apple处理完您的上传文件后,将其作为构建后的步骤。

背景

症状

缺少dSYM /在第三方崩溃报告控制台中的符号失败。我以为,尽管按照Crashlytics安装说明进行操作,脚本还是失败了。

位码-基本问题

事实证明,第三方崩溃报告系统(例如Crashlytics或New Relic)在当前的最佳应用分发实践中存在一个基本问题,该最佳实践是启用了位码的应用。从历史上看,这些第三方崩溃报告系统依靠构建时步骤来上载构建时生成的dSYM。但是由于启用位码意味着应用程序商店会重新编译您的应用程序,因此您试图上载的由构建时生成的dSYM实际上是无用的。

作为背景,启用了位码的应用程序被“变薄”,因此被Apple重新编译,因此每个设备仅获得所需的下载位。 您要启用位码。这是一件好事。但是,启用位码的分发会弄乱符号。 无论您在构建时生成什么dSYM,这些dSYM实际上都不会与您的崩溃相关,因为您的崩溃将来自具有新的对应dSYM的应用商店的应用商店重新编译版本。

因此,不必担心上载脚本在构建时是否起作用。实际上,应该从构建过程中删除该步骤,因为这只会浪费您的时间和带宽。

解决方案

解决方案是在上载您的应用程序后等待“一段时间”(据报道,通过NewRelic文档,这是几分钟)(可能是App Store所说的构建持续时间),然后从那里下载dSYM。使用您的第三方崩溃报告程序命令行上传脚本

手动下载/上传

第三方崩溃报告者(至少是NewRelic和Crashlytics文档)目前推荐的解决方案是转到App Store Connect页面进行构建并下载dSYM,然后上传,或者使用XCode的Organizer进行归档。 “下载调试符号”按钮,然后将其上传。

这确实有效,将手动dSYM下载推送到崩溃报告供应商后,您将获得带符号的报告。尽管使用Xcode GUI或App Store Connect界面,这是一个手动过程。

快速通道自动化

不过,您可以使用Fastlane自动执行此过程,我认为这是正确的解决方案。

https://docs.fastlane.tools/actions/download_dsyms/#download_dsyms

https://docs.fastlane.tools/actions/upload_symbols_to_crashlytics/

答案 1 :(得分:1)

尝试以下步骤:

第1步:选择应用程序的Xcode项目,然后选择应用程序目标,然后选择“构建阶段”。

第2步:在Xcode菜单中,选择“编辑器”,然后选择“添加构建阶段”,然后单击“添加运行脚本构建阶段”。

第3步:您现在应该在“构建阶段”选项中看到“运行脚本”部分。

第4步:将脚本粘贴到“运行脚本构建阶段”正文中。

请记住要在脚本中设置正确的文件路径。

答案 2 :(得分:0)

您需要在“项目目标”->“构建设置”->“调试信息(调试并同时发布和发布)->带有dSYM文件的DWARF”中要求更新

enter image description here