退出,因为上传符号在验证模式下运行

Posted

技术标签:

【中文标题】退出,因为上传符号在验证模式下运行【英文标题】:Exiting because upload-symbols was run in validation mode 【发布时间】:2019-11-15 07:07:18 【问题描述】:

我正在尝试将 Fabric 添加到我的 xcode 项目中。我过去做得很成功,但现在面临一个 react-native 项目的问题。环顾四周,我已经尝试了几乎所有建议的组合。我的设置如下所示:

我也尝试过使用“$PODS_ROOT/Fabric/run”的 Pods 版本,但是无论我做什么,我都无法从“添加运行脚本”步骤继续。

为了尝试调试,我已将 Fabric 命令生成的输出定向到文件。它产生以下结果:

在构建阶段模式下运行上传符号 验证构建 Crashlytics 的环境... 验证成功。退出是因为 upload-symbols 在验证模式下运行

非常感谢任何帮助。我很不确定如何从这里拿走它

附加信息

我从头开始重新安装了 Fabric Mac 应用程序,重新启动了 xcode、fabric 应用程序和整个系统。尝试在发布模式下构建,并且在这里几乎尝试了所有内容:

Crashlytics in ios won't proceed past "Build Your Project" in Fabric app

【问题讨论】:

同样的问题,但这是因为我错过了脚本中的引号。 "$PODS_ROOT/FirebaseCrashlytics/run" 【参考方案1】:

“由于上传符号在验证模式下运行而退出”消息有点误导,因为它也会在一切正常时出现...我使用的是最新的 Firebase Crashlytics 4.0.0,但它产生完全相同的输出作为旧的 Fabric 脚本。

中的cmets

$PODS_ROOT/FirebaseCrashlytics/run

解释清楚:

# run
#
# This script is meant to be run as a Run Script in the "Build Phases" section
# of your Xcode project. It sends debug symbols to symbolicate stacktraces,
# sends build events to track versions, and onboards apps for Crashlytics.
#
# This script calls upload-symbols twice:
#
# 1) First it calls upload-symbols synchronously in "validation" mode. If the
#    script finds issues with the build environment, it will report errors to Xcode.
#    In validation mode it exits before doing any time consuming work.
#
# 2) Then it calls upload-symbols in the background to actually send the build
#    event and upload symbols. It does this in the background so that it doesn't
#    slow down your builds. If an error happens here, you won't see it in Xcode.
#
# You can find the output for the background execution in Console.app, by
# searching for "upload-symbols".
#
# If you want verbose output, you can pass the --debug flag to this script

提醒一下:如果您想在 Console.app 中查看消息,请先启动应用程序...

【讨论】:

【参考方案2】:

我遇到了这个问题,我通过检查位于 Build Ph 附近的“仅在安装时运行脚本”解决了这个问题

【讨论】:

但设置不会使 DSYMs 文件仅在用户第一次安装应用程序时上传? @LuisMejías 需要这些符号来符号化 Crashlytics 门户中的崩溃报告,而不是在用户的安装中。他们发送不带符号的崩溃报告【参考方案3】:

来自 Fabric/Firebase 支持的 Chintan。你能检查一下是否在构建设置中,

带有 dSYM 的 DWARF

文件已被选为您的

调试信息格式

另外,从设备/模拟器中删除应用程序,清理项目,重新构建,运行并再次安装应用程序。如果这不起作用,请联系 support(at)fabric(dot)io,您的应用可能需要手动激活。

【讨论】:

谢谢陈丹。我已经检查了以上所有内容,它们似乎与描述的一样。我已按照您的所有步骤操作,但问题仍然存在,Fabric 应用程序不会进入下一步。有什么方法可以进一步调试? 您的问题解决了吗?我面临着完全相同的问题。我有多个使用 Fabric 的应用程序,无法添加新的应用程序,我没有使用 CocoaPods。我已经更新了应用程序 通过联系 Fabric 客户支持解决了完全相同的问题。就我而言,问题是我被添加到组织中,而不是项目中(当时项目不存在)。错误消息与 OP 问题完全一样。 在这种情况下,我最好与组织的管理员/所有者仔细检查。默认情况下,管理员可以访问组织下的所有应用。【参考方案4】:

正如@llude 提到的,为了将 DYSM 发送到 FirebaseCrashlytics,您只需在代码构建阶段脚本中添加一行:$PODS_ROOT/FirebaseCrashlytics/run

如设置指南中所述: https://firebase.google.com/docs/crashlytics/get-started?platform=ios#initialize-crashlytics

请注意,您需要添加 2 个字段作为 输入文件(在构建阶段脚本中),以便更新符号发送 DYSM 文件:

plist 文件路径 dysm 文件路径

【讨论】:

以上是关于退出,因为上传符号在验证模式下运行的主要内容,如果未能解决你的问题,请参考以下文章

windows下上传shell脚本不能运行—将dos模式修改为unix 文件格式

观察者模式实际应用:监听线程,意外退出线程后自动重启

资产监控设备进入或退出睡眠模式的原理

在 FirebaseCrashlytics 的构建阶段运行脚本中上传符号时,Xcode 构建永远不会完成

链接器命令失败,退出代码为 1 - 重复符号 __TMRbBp

laravel 收不到iOS上传的文件