【发布时间】:2019-06-10 07:52:00
【问题描述】:
我们正在尝试解决使用 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 中具有管理员访问权限
我的问题是:
- 为什么其他两个 dSYM 文件不在我从 App Store 下载的 zip 中?
- 为什么一些崩溃与一个 dSYM 相关,而其余的与另一个相关?我们目前可以访问的崩溃是否有任何类型的分类?
- 我们能否在不向 App Store 发布新应用版本的情况下获取所有生产崩溃报告的访问权限?我们正在努力避免这种情况 ATM。
编辑#1:
所以这个发布构建的人并没有完全遵循最佳实践。我想探索他们将 dSYM 文件提交到服务器存储库的可能性。
这是他们的 gitignore:
.DS_Store
xcuserdata
<PROJECT NAME>.xcodeproj/project.xcworkspace/xcshareddata/
build/
Build/
我猜构建文件夹几乎排除了这种可能性。我还在文件结构中搜索了包含文本“com_apple_xcode_dsym_uuids ==”的文件,但没有成功......
编辑 #2:
我附上了 Fabric 支持给我的答案的摘录:
如果您的应用程序使用框架,产品文件夹将包含 为每个构建的框架生成一个单独的 dSYM 文件。最终 如果我们想覆盖我们的基地并能够 象征着我们应用程序中每个可能位置的崩溃。 dSYM 文件 在构建特定版本的应用程序时生成的 仅用于表示该特定版本的崩溃。
dSYM 文件由唯一 ID (UUID) 标识,该 ID 每次更改 当我们修改和重建我们的代码时,那个 ID 就是用来 将符号文件匹配到特定的崩溃。 dSYM 可能与 多个 UUID,因为它可能包含超过 一种架构。
【问题讨论】:
标签: ios app-store crashlytics google-fabric dsym