【问题标题】:Could not complete submission of dSYM When fabric to firebase migration for crashlytics无法完成提交 dSYM 当结构到 firebase 迁移以进行 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 命令;对吗?

标签: ios swift firebase crashlytics google-fabric


【解决方案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 吗?我不确定,因为我以前没有遇到过,也许你可以试试这个解决方案stackoverflow.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}"
猜你喜欢
  • 2022-10-05
  • 2019-03-27
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
相关资源
最近更新 更多