无法完成提交 dSYM 当结构到 firebase 迁移以进行 crashlytics

Posted

技术标签:

【中文标题】无法完成提交 dSYM 当结构到 firebase 迁移以进行 crashlytics【英文标题】:Could not complete submission of dSYM When fabric to firebase migration for crashlytics 【发布时间】:2020-03-01 10:18:39 【问题描述】:

我正在使用 xcode11 和 mac os 10.14.1。 我使用以下文档实现了结构到 Firebase 的迁移。

https://medium.com/@niamhpower/the-great-migration-moving-from-fabric-to-firebase-as-an-ios-developer-7b61a8b40008

并且我生成了用于测试崩溃的代码,但是这个崩溃报告不能出现在 firebase crashlytics 控制台中。我使用以下文档进行此实现

https://firebase.google.com/docs/crashlytics/force-a-crash?platform=ios

我还在 Xcode 构建阶段添加了以下运行脚本

"$PODS_ROOT/Fabric/upload-symbols" -gsp "$PROJECT_DIR/GoogleService-Info.plist" -p ios "$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME"

但这会在我运行应用程序时返回以下错误。

31merror:无法在 /Users/macmini1/Library/Developer/Xcode/DerivedData/app_name-dnzsvdsxebmfqjbjecjlyhdzwags/Build/Products/Debug-iphonesimulator/app_name.app.dSYM 完成 dSYM 提交:错误域 = com .crashlytics.mac.error-domain.process-dsym 代码=3 "文件不再存在于 (null)" UserInfo=NSLocalizedFailureReason=文件不再存在于 (null)[0m 命令 PhaseScriptExecution 失败,退出代码非零

你能帮我解决这个问题吗

【问题讨论】:

您是否仍然遇到此问题。 Firebase 的 OMG 会影响开发人员上传 dSYM 嗨,我遇到了同样的问题,你有什么运气吗? @weet1988 的回答没有解决我的问题(它已经是我运行的最后一个脚本) @mikey 我从运行脚本中删除了脚本并再次添加并关闭了xcode。然后尝试再次运行。它会工作 我实际上让 Crashlytics 在没有 upload-symbols 脚本的情况下工作。我刚刚将 pod 更新为可用的最新版本,并确保 $ PODS_ROOT/Fabric/run 是最后一个运行的。感谢您的回复@IKKA @mikey 你的意思是你在 runscript 中只使用了 $ PODS_ROOT/Fabric/run 命令;对吗? 【参考方案1】:

我遇到了同样的问题。原因是脚本“$ PODS_ROOT/Fabric/run”不是构建阶段脚本列表中的最后一个。最后编写脚本,一切顺利。

【讨论】:

如果你将运行行移动到脚本的末尾,构建不会失败,但dysm文件不会发送到Crashlytics【参考方案2】:

我已经通过添加find 命令解决了。在上传符号上方添加查找命令

例子:

找到“$DWARF_DSYM_FOLDER_PATH”-名称“*.dSYM”| xargs -I $PODS_ROOT/Fabric/上传符号-gsp "$PROJECT_DIR/MyApp/GoogleService-Info.plist" -p ios

"$PODS_ROOT/Fabric/upload-symbols" -gsp “$PROJECT_DIR/MyApp/GoogleService-Info.plist”-p ios "$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME"

【讨论】:

我们是否需要上传其他不是 $DWARF_DSYM_FILE_NAME 的 .dSYM 文件? @Cyber​​Mew,不需要上传所有的 .dSYM 文件。你说的对。所以我们只能找到我们需要上传的文件。我修改了答案。 我相信您上传所有 .dSYM 文件的原始答案是正确的。我已与支持人员核实,他们提到“Crashlytics 将需要您主应用程序中的符号文件以及任何使用的框架或库。”,所以基本上是的,所有符号文件都是必需的。 太酷了!当我上传所有 .dSYM 文件进行试飞时,我收到一条警告“ITMS-90381:符号文件过多”。有什么想法吗? 上传到test flight?您是指 Firebase Crashlytics 吗?我不确定,因为我以前没有遇到过,也许你可以试试这个解决方案***.com/questions/25755240/…,如果它不起作用联系支持,让我们知道他们怎么说!【参考方案3】:

就我而言,我尝试上传 dSYM 的解压缩版本。我的构建会生成一个文件myapp.app.dsym.zip。您必须上传压缩版本。

【讨论】:

这是给我的,出于某种原因,我认为我需要提取从 CI 下载的 zip 并上传 .dSYM 文件本身。 是的,我也误解了Firebase控制台上.dSYM文件的含义... IMO,Firebase可以在文档中更清楚地说明!!!【参考方案4】:

通过从Build Phases --> Run Script 中删除脚本,尝试在没有脚本的情况下运行您的应用程序(或制作存档等...)(以首次创建 DSYM 文件),然后添加脚本并重试。

(使用 FirebaseCrashlytics/upload-symbols 脚本为我工作)

【讨论】:

# 键入脚本或从工作区拖动脚本文件以插入其路径。 "$PODS_ROOT/FirebaseCrashlytics/run" "$PODS_ROOT/FirebaseCrashlytics/upload-symbols" -gsp "$PROJECT_DIR/GoogleService-Info.plist" -p ios "$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME"

以上是关于无法完成提交 dSYM 当结构到 firebase 迁移以进行 crashlytics的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 新的 Firebase Crashlytics (4.0.0-beta.5) - dSYM 上传失败

使用上传符号将 dSYM 上传到 Firebase

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

Firebase crashlytics 自动上传 dsym

Firebase Crashlytics DSYM 文件

Firebase Crashlytics 为 UUID 上传丢失的 dSYMs 文件