作为 Xcode 构建过程的一部分,如何 运行 上传符号以上传 dSYM?

How to run upload symbols to upload dSYMs as a part of Xcode build process?

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

我卡在了 "Run the upload symbols script manually" 部分。 有 3 种上传 dSYM 的方法。我正在尝试遵循第一个 - 在您的构建过程中包括以下行: find ${DWARF_DSYM_FOLDER_PATH} -name "*.dSYM" | xargs -I \{\} ${PODS_ROOT}/Fabric/upload-symbols -gsp MyProjectFolder/GoogleService-Info.plist -p ios \{\}

现在我尝试了以下方法:

  1. 我去项目->方案->编辑方案。
  2. 我点击构建->Post 动作
  3. 我从小做起 - 我只想在构建过程中显示 "echo":
  4. 我运行产品->构建
  5. 我转到查看->导航器->显示报表导航器
  6. 没有迹象表明 echo 是 运行。

把这个脚本放在哪里?

如何判断它是否运行?

您需要在 Project Target -> Build setting -> debug information (Debug and release both) -> DWARF with dSYM 文件中进行更新

请尝试以下步骤:

第 1 步:Select 您的应用程序的 Xcode 项目,然后是您的应用程序目标,然后是 select "Build Phases"。

第 2 步:在 Xcode 菜单中,select "Editor",然后 select "Add Build Phase",然后单击 "Add Run Script Build Phase"。

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

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

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

TL;DR: 构建时生成的dSYMS在"bitcode enabled"时代价值不大,需要苹果下载dSYMs上传在 Apple 处理完您的上传后,将它们作为 post 构建步骤添加到您的第 3 方崩溃报告器服务。

背景

症状

第 3 方崩溃报告控制台中缺少 dSYM/符号化失败。我认为尽管遵循了 Crashlytics 安装说明,脚本还是失败了。

Bitcode - 根本问题

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

作为背景,支持位码的应用程序是 "thinned",因此由 Apple 重新编译,以便每个设备只获得它需要的下载位。 您想启用位码。这是一件好事。但是,启用位码的分发会弄乱符号。 无论您在构建时生成什么 dSYM,dSYM 实际上都不会与 App Store 或 TestFlight 安装版本的崩溃相关联,因为您的崩溃将来自应用商店重新编译的应用版本以及相应的新 dSYM .

所以不用担心上传脚本在构建时是否工作。事实上,该步骤可以从您的构建过程中删除,因为它只会浪费您的时间和带宽。

唯一可能有用的情况是,如果您想从本地安装的发行版本中符号化崩溃,而不是直接在 Xcode 中调试它们。

解决方案

解决方案是等待 "some time"(据报道,根据 NewRelic 文档,根据我的经验,在 fastlane 上传之后但在我 运行 fastlane 的 download_dsyms 操作之前有 120 秒的睡眠有时会失败,可靠地睡眠 300 秒)在上传您的应用程序后(可能是 App Store 显示您的构建的持续时间 "Processing"),然后从那里下载 dSYM 并使用您的第 3 方崩溃报告程序命令-行上传脚本

手动下载/上传

第 3 方崩溃报告者(至少包括 NewRelic 和 Crashlytics 文档)当前推荐的解决方案是转到 App Store Connect 页面构建并下载 dSYM 然后上传,或者使用 XCode的存档组织者点击 "Download Debug Symbols" 按钮,然后上传它们。

这确实有效,将手动 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/