为什么Crashlytics每次都要求丢失DSYM文件?

Anu*_*pta 6 xcode ios crashlytics google-fabric

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

但是问题是,每当我为我们的应用程序创建新版本时,它都会再次显示缺少的DSYM文件上载新内容。

有什么解决办法吗?

在Fabric Document中,我发现了这一点。但我不明白这一点。

谁能向我解释如何解决此问题?

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

在此处输入图片说明

elf*_*aid 15

我们最近遇到了同样的问题。最终得到了一个上传脚本的定制版本。

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

Run Code Online (Sandbox Code Playgroud)

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

find这里的目的也是帮助上传动态框架的 dSYM 文件。例如操作系统第三方库、项目框架等。否则,它们将不会被符号化。虽然仍然出现在堆栈跟踪中。


use*_*114 11

TL; 博士

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

您可以查看有关上传 dsym以通过添加构建阶段自动上传您的 dSYM 的Fabric 文档,或者使用 Fabric pod 而不仅仅是 Crashlytics,后者显然会像 @ekscrypto 所说的那样自动添加构建阶段。

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

更多细节

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

当您归档您的应用程序时,您会留下 *.xcarchive “文件”,它实际上是一个您可以浏览的文件夹。在这个 xcarchive 中,你应该有一个 dSYM 文件夹,你的 dSYM 所在的位置。

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

这将带您进入 xcarchive,您可以在其中查看应用的 dSYM

应用程序的 dSYM

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

  • 每次在添加一行代码后重新编译项目时,dSYM 都会发生变化,因为生成的二进制文件中的代码行地址不同。您可以查看 https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#upload-symbols-script 以自动将 dSYM 文件上传到 Fabric,甚至可以添加脚本阶段到你构建了这样做的阶段 (2认同)

Mah*_* Fa 9

在您的 Xcode 项目中,在 Build Phases 下添加上面的运行脚本:

"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明