Crashlytics每次都要求缺少DSYM文件

时间:2018-07-20 10:11:47

标签: ios xcode crashlytics google-fabric

我在我的应用程序中使用了Crashlytics,一切正常。甚至Crashlytics也运作良好。

  

但是问题是,每当我为我们的应用创建新建版本   再次显示丢失的新DSYM文件。

对此有什么解决办法吗?

在fabric文档中,我发现了这一点。但是我不明白。

有人可以向我解释如何解决此问题吗?

https://docs.fabric.io/apple/crashlytics/advanced-setup.html

enter image description here

7 个答案:

答案 0 :(得分:13)

我们最近遇到了同样的问题。最终获得了一些自定义版本的上传脚本。

if [[ "${CONFIGURATION}" = "Release" ]] || [[ "${CONFIGURATION}" = "Adhoc" ]]; then
  echo "Uploading dSYMs.."
  find "${DWARF_DSYM_FOLDER_PATH}" -name "*.dSYM" | xargs -I \{\} "${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${SRCROOT}/GoogleService-Info.plist" -p ios \{\}
else
  echo "Skip dSYMs upload"
fi

请注意在调试配置中带引号的路径和跳过的dSYM上传。尽管这在大多数情况下可能无关紧要,但是无论如何在Debug配置中关闭了dSYMS。

这里find的目的还在于帮助上传动态框架的dSYM文件。例如。 OS第三方库,项目框架等。否则,将不会对其进行符号化。尽管仍然显示在堆栈跟踪中。

答案 1 :(得分:3)

此错误意味着某些dSYM文件丢失。推荐的方法是将dSYM文件不断上传到Crashlytics。

现在 Crashlytics 已集成在 Firebase 中,文档略有更改:https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk

  1. 集成Crashlytics:pod 'Firebase/Crashlytics'
  2. 添加运行脚本阶段: find "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}" -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp ${SRCROOT}/GoogleService-Info.plist -p ios \{\}

如果您不想每次调试构建应用程序时都上传dSYM文件:https://support.crashlytics.com/knowledgebase/articles/118559-can-i-make-the-dsym-uploading-only-on-release-buil

答案 2 :(得分:2)

TL; DR

每次添加一行代码后重新编译项目时,dSYM都会更改,因为生成的二进制文件中的代码行地址不同。

您可以查看Fabric docs about uploading dsym通过添加一个构建阶段来自动上载dSYM,或者使用Fabric窗格而不是仅使用Crashlytics(显然会自动添加一个构建阶段,如@ekscrypto所说的那样)。

如果您仍然希望手动执行此操作,请打开xcarchive,在其中可以找到dSYM,并将其上传到crashlytics

更多详细信息

dSYM是调试SYMbol的缩写。这可以帮助crashlytics解决收到的崩溃日志,并帮助显示有关可能发生的崩溃/错误的详细信息。

存档应用程序时,剩下的* .xcarchive“文件”实际上是一个可以浏览的文件夹。在此xcarchive中,您应该在dSYM所在的位置有一个dSYM文件夹。

要查看它,请先在XCode中打开管理器窗口(“窗口”>“管理器”或cmd + shift + 6),右键单击最后一个存档,然后单击“在Finder中显示”。在打开的“查找器”窗口中,右键单击您的应用程序的最后一个xcarchive,然后单击显示内容(抱歉,图片为法语) browse xcarchive contents

这会将您带到xcarchive中,您可以在其中查看应用程序的dSYM

dSYM for the app

将其上传到crashlytics应该可以解决您的问题

答案 3 :(得分:2)

遵循简单步骤 1转到存档,然后右键单击要在Firebase上获取崩溃报告的最新版本 2参见dsyms文件夹 3创建dsyms文件夹的Zip文件 4最终将该zip文件上传到Firebase控制台

答案 4 :(得分:2)

然后他们又改变了:

find dSYM_directory -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp ${SRCROOT}/GoogleService-Info.plist -p ios \{\}

在这里检查: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk

答案 5 :(得分:0)

确保您集成了新的“ Fabric”框架,而不仅仅是Crashlytics框架。当您这样做时,您将在项目的构建阶段中得到一个新脚本。

Xcode project Build Phase script for Fabric.io

此脚本将自动找到dSYM,并将其与您的构建一起上载到Fabric.io/Crashlytics系统。

答案 6 :(得分:0)

在您的Xcode项目中的“构建阶段”下,添加上述运行脚本:

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

enter image description here