在黑盒情况下处理丢失的dSYM文件

时间:2019-01-16 09:01:30

标签: ios app-store crashlytics google-fabric dsym

我们正在尝试解决使用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

所以...我在这里处于黑箱状态...

  • 我不是iOS开发人员
  • 我无权访问用于构建项目的计算机或生成构建的人
  • 我正在协助刚刚加入团队的iOS开发人员
  • 我有权访问项目存储库
  • 我有权访问App Store Connect个人资料
  • 我在Fabric中具有管理员权限

我的问题是:

  1. 为什么我从App Store下载的zip文件中没有其他两个dSYM文件?
  2. 为什么有些崩溃与一个dSYM相关,而其余崩溃与另一个相关?我们目前可以访问的崩溃是否有任何分类?
  3. 我们可以做一些事情来获得对所有生产崩溃报告的访问权,而无需在App Store中发布新的应用程序版本吗?我们正在尝试避免这种情况的ATM。

编辑#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,因为它可能包含不止一个的调试信息   一种架构。

1 个答案:

答案 0 :(得分:2)

在我看来,您可能需要上传一个新的版本,如果它包含任何错误修复,那么还算不错。关于您的问题:

  

为什么其他两个dSYM文件不在我从App Store下载的zip文件中?

仅当使用Bitcode分发应用程序时,才可以从App Store连接下载dSYM。位码是源的中间表示,App Store用来生成针对特定体系结构/设备的最终优化机器码。当选择了位码时,所有链接的框架/库也应该使用位码来交付,因此只有一些dSYM看起来很奇怪。尽管可能性不大,但丢失的dSYM是否有可能来自另一个版本?

  

为什么有些崩溃与一个dSYM相关,而其余崩溃与另一个相关?我们目前可以访问的崩溃是否有任何分类?

每个target / framework / lib都生成自己的dSYM,因此您的应用程序可能依赖于一个或多个框架,并且某些崩溃源自该框架。

  

我们可以做一些事情来获得所有生产崩溃报告的权限,而无需在App Store中发布新的应用程序版本吗?

到目前为止,我想不出另一种解决方案。