无法在Crashlytics / fabric中获取崩溃报告。显示错误:“看起来我们缺少dSYMs以处理以下版本的崩溃。”

45

Screenshot of fabric dashboard

我的iOS应用程序在fabric/crashlytics中没有生成崩溃报告。 在fabric仪表板上显示了一个错误(如截图所示)。

按照fabric的指示,我尝试从安装了fabric mac应用程序的机器(我创建应用程序的地方)中使用spotlight搜索给定的UUID,但是没有任何结果。 还尝试使用终端搜索命令:mdfind“com_apple_xcode_dsym_uuids == <UUID>”(如http://support.crashlytics.com/knowledgebase/articles/376834-missing-dsyms中所述),但也没有找到任何结果。

之前有人遇到过这个问题吗? 有什么解决方法吗?


那么你是在构建阶段运行脚本,该脚本在构建期间向Crashlytics提交dsym吗? - Droppy
是的,我正在构建阶段运行一个shell脚本,这个脚本是在集成fabric时复制的。 - Vineeth
这可能会对某些人有所帮助 - 你需要知道的全部内容 - Rahul Verma
10个回答

65

我在成功将Fabric设置到我的应用程序后,遇到了相同的问题,我尝试了各种解决方案,但对我起作用的是:

  1. 转到项目和目标的项目设置,并将调试信息格式设置为DWARF with dSYM文件

设置当前配置 enter image description here


2
如果我通过 CocoaPods 添加 Crashlytics,我是否还需要在 pods.xcodeproj 设置中进行设置? - Isuru

42
您可以通过生成特定版本构建的dSYMs文件,并将其上传到Crashlytics上,来获取崩溃报告。
按照以下步骤生成dSYMs文件:
  1. 在Xcode中,转到窗口菜单 -> 组织者

  2. 选择正确的构建版本,然后单击右侧面板上的"下载调试符号"按钮。

  3. 右键单击正确版本的构建,然后选择在Finder中显示。

  4. 选择.xcarchieve文件,然后右键单击该文件并单击"显示包内容"

  5. 然后,进入**dSYMs文件夹**,选择.dSYM文件并压缩该文件

  6. 现在最后一步是将压缩文件上传到Fabric上

然后您就可以获得构建的崩溃报告。

11
我有三个档案,其中使用Crashlytics指定了构建版本。我尝试上传每个档案的压缩dSYM文件,在上传后会显示消息“已成功上传dSYM文件!”。但即使刷新页面,错误仍然存在。 :-( - Vineeth
我也遇到了同样的问题。我通过注销并登录到Fabric来解决它。你可以试试,也许会有帮助。 - Hardik Shekhat
我已经从网站上完成了它。 - Hardik Shekhat
3
尝试过上传后注销-登录,但仍然无法正常工作。错误依旧存在。 :-( - Vineeth
2
在执行第二步之前,在组织器中选择版本,然后单击右侧的“下载dSYMs…”按钮。 - AmeenD
显示剩余2条评论

22
我终于得到答案了:
我进入iTunes Connect > 我的应用程序 > 活动 > 点击构建缺失的dSYM > 下载dSYM。下载后在末尾添加.zip扩展名(不确定为什么苹果没有显示.zip),然后可以解压它。在这个文件夹中,我能够找到fabric请求的丢失的dSYM,然后将其上传到fabric。
处理dSYM需要几分钟时间。在我的情况下,重新符号化崩溃报告需要24小时。

我们正在处理上传的dSYM文件。请稍等几分钟以获取状态更新。 - Gajendra K Chauhan

14

考虑以下答案:

  1. 在Xcode中,进入“Window菜单”->“组织器”

现在在组织器中,选择版本,然后单击右侧的“下载dSYMs…”按钮。

  1. 右键单击正确版本的构建,然后选择在Finder中显示。

  2. 选择.xcarchieve文件,然后右键单击该文件并单击“显示包内容”

  3. 然后转到**dSYMs文件夹并选择.dSYM文件并压缩该文件

记得压缩适合的.dSYM文件,例如:

enter image description here

enter image description here

  1. 现在最后一步是上传压缩文件到fabric

上传时结果如下:

enter image description here

如果您的计算机上没有构建,则可以直接从itunesconnect下载dSYMS:

enter image description here


12

当我上传到AppStore或导出文件时,问题在我取消选择“包括位码”时解决了。

希望这个问题能在下一个Crashlytics更新中得到解决。


1
太棒了...我连续三天三夜都在尝试找出错误的原因。你救了我的命。非常感谢。 - Sneha

0

不要归档dSYMs文件夹,打开文件夹然后归档你的appname.app.dSYMs文件,然后提交它。

如果你想在调试中获得崩溃报告,请使用带有dSYM文件的DWARF调试信息格式。


0

enter image description here

另一个非常重要的步骤是点击 "下载调试符号"。在完成此步骤后,我找到了缺失的 UUID。


0
如果您没有生成dSYMs文件,请执行以下操作:

在Xcode中的“组织者”中选择已上传到iTunes的正确版本,右键单击该版本并选择“显示包内容”选项。 进入dSYMs文件夹并选择.dSYM文件将其上传到Fabric,然后您就可以获取崩溃报告。 有关更多详细信息,请访问此链接 >>>>> https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#upload-dsym


0
Firebase已发布了解决“Missing dSYM”问题的官方指南: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?authuser=0 下面是链接内容的复制,以供快速参考。
Firebase Crashlytics会自动处理您的调试符号(.dSYM)文件,以提供反混淆的、易读的崩溃报告。
不幸的是,有一些情况下dSYM上传会失败,通常是由于您的应用程序中独特的项目配置或Bitcode。当上传失败时,Crashlytics会在Firebase控制台中显示“缺少dSYM”警报,以让您知道它无法正确显示崩溃报告。
如果您收到该警报,有两件事情可以尝试解决问题:检查Xcode是否生成了正确的dSYM文件,如果是,则手动运行dSYM上传脚本。
检查Xcode是否生成调试符号文件
往往情况下,符号文件丢失是因为Xcode根本没有生成它们。以下是如何检查您的项目是否在每次构建时生成dSYMs:
在Xcode中打开您的项目,并在Xcode导航器中选择项目文件。从“选择项目或目标”下拉菜单中选择您的主要构建目标。打开目标的“构建设置”选项卡。点击选项卡顶部附近的“All”。搜索“调试信息格式”。将调试信息格式设置为DWARF with dSYM File。完成后,再次构建您的应用程序,并检查Firebase控制台,看看Crashlytics是否能够找到您的dSYMs。
手动运行上传符号脚本
作为备份,Crashlytics还包括upload-symbols,一个您可以在构建过程中的任何位置调用的脚本,以手动上传您的dSYMs。该脚本提供有关上传过程的更多信息和更强大的错误消息。
重要提示:如果您正在使用之前从Fabric链接到Firebase Crashlytics的应用程序,请传递您的Fabric API密钥以运行上传符号脚本。也就是说,在以下选项中运行脚本时,请使用-a fabric-api-key而不是-gsp path/to/GoogleService-Info.plist。要运行upload-symbols脚本,请使用以下选项之一:
在您的构建过程中包含以下行:
find dSYM_directory -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/Fabric/upload-symbols -gsp /path/to/GoogleService-Info.plist -p platform \{\}

直接从您的终端运行脚本:
/path/to/pods/directory/Fabric/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

在 Xcode 的运行脚本构建阶段中运行该脚本:
"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

注意:如果您遇到问题,请运行upload-symbols而不带任何参数,以获取使用说明和其他指示。

-1

我也遇到了使用 Fabric Crashlytics 的同样问题。后来,我使用分发配置文件创建了 IPA 文件,并通过 iTunes 安装到我的设备上。之后,我开始收到崩溃报告。希望这能有所帮助 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接