我们正在尝试解决使用Fabric / Crashlytics的iOS应用程序中的严重崩溃。我们没有上次使用该应用程序并将其最新版本上传到App Store的人员的联系方式。
在项目仪表板中,我注意到以下消息:“在过去24小时内,由于缺少1个版本的dSYM而发现XXX未符号化的崩溃”。截图:https://i.imgur.com/YT9gggJ.jpg
我做了我能想到的唯一明智的事情:我去了App Store Connect仪表板。我根据Fabric的官方说明下载了相关构建的dSYM zip:https://docs.fabric.io/apple/_images/download-dsym.png
然后我转到dSYM工具并直接上传了zip。原来所需的四个文件中只有两个在zip中(我自己也检查过):https://i.imgur.com/JqxZcaD.jpg
所以...我在这里处于黑箱状态...
我的问题是:
编辑#1 :
因此,发布此版本的人并不完全遵循最佳实践。我想探讨他们将dSYM文件提交到服务器存储库的可能性。
这是他们的gitignore:
.DS_Store
xcuserdata
<PROJECT NAME>.xcodeproj/project.xcworkspace/xcshareddata/
build/
Build/
我想build文件夹几乎可以排除这种可能性。我还在文件结构中搜索了包含“ com_apple_xcode_dsym_uuids ==”文本的文件,但没有成功...
编辑#2:
我要附上Fabric支持给我的答案的一个摘要:
如果您的应用程序使用框架,则product文件夹将包含 为每个构建的框架生成一个单独的dSYM文件。最终 如果我们想覆盖我们的基地并能够 表示我们应用中每个可能位置的崩溃。 dSYM文件 在构建特定版本的应用程序时生成的 仅用于象征该特定版本的崩溃。
dSYM文件由唯一ID(UUID)标识,该ID每次更改 修改和重建代码时,该ID就是用来 将符号文件匹配到特定的崩溃。 dSYM可能与 不止一个UUID,因为它可能包含不止一个的调试信息 一种架构。
答案 0 :(得分:2)
在我看来,您可能需要上传一个新的版本,如果它包含任何错误修复,那么还算不错。关于您的问题:
为什么其他两个dSYM文件不在我从App Store下载的zip文件中?
仅当使用Bitcode分发应用程序时,才可以从App Store连接下载dSYM。位码是源的中间表示,App Store用来生成针对特定体系结构/设备的最终优化机器码。当选择了位码时,所有链接的框架/库也应该使用位码来交付,因此只有一些dSYM看起来很奇怪。尽管可能性不大,但丢失的dSYM是否有可能来自另一个版本?
为什么有些崩溃与一个dSYM相关,而其余崩溃与另一个相关?我们目前可以访问的崩溃是否有任何分类?
每个target / framework / lib都生成自己的dSYM,因此您的应用程序可能依赖于一个或多个框架,并且某些崩溃源自该框架。
我们可以做一些事情来获得所有生产崩溃报告的权限,而无需在App Store中发布新的应用程序版本吗?
到目前为止,我想不出另一种解决方案。