在Fabric应用中,iOS的Crashlytics无法通过“构建您的项目”阶段。

74
我正在为我的iOS应用程序安装 Crashlytics。通过他们的网站链接下载了它,并按照集成框架、添加运行脚本等所有步骤进行操作。
由于出现了问题,所以我删除了这些框架,决定重新开始尝试新版本的安装。但 Fabric 应用更新到了一个新版本,现在当我尝试将 Crashlytics 重新安装到我的应用程序中时,它没有给我重新安装框架的选项。直接从 "点击安装" 到 "构建项目" 屏幕,我无法通过。
我按下 ⌘B 键,然后构建了一番,但什么也没发生。我认为问题是因为我从项目中删除了 Crashlytics 和 Fabric 框架,但我找不到添加它们回来的方法。Fabric 应用没有给我那个选项。

1
@MikeB:我所看到的只有“现在让我们更新Crashlytics”,没有选项可以稍后添加新应用程序。由于符号重复,更新流程无法正常工作。我该如何获取与Fabric良好配合的正确版本的Crashlytics框架? - Matej Balantič
@MatejBalantič,听到你遇到了重复符号的问题有些奇怪。尝试删除当前框架的副本。此外,我之前提到的步骤也可以作为修复模式,让你重新启动并运行。 - Mike Bonnell
我想说这里的主要问题是当你尝试使用 .xcworkspace 时。原因是,如果你从 Crashlytics 打开它,它会打开你的 .xcxcodeproj - Jacksonkr
使用Xcode 10.2,下面的答案再次失效。必须使用手动方法安装Fabric。 - Raptor
@Raptor 是正确的。这在 Xcode 10.2 w/ Cocoapods 中停止工作。我还没有尝试手动安装 Fabric(而且我也不想这样做)。 - albertodebortoli
@albertodebortoli 很简单。只需将这两个框架拖到Xcode中,添加构建阶段脚本并编译即可。比一直等待Fabric修复要好。 - Raptor
27个回答

163

进入您的目标构建设置。

找到“调试信息格式”。

将其从“DWARF”(在调试和发布中)设置为“带有dSYM文件的DWARF”。


7
谢谢!这是 Xcode 10 和 Mojave 的修复方案! - Mark
是的,这对我有用。这真的应该写在指示中。 - Shayne
1
这应该是文档的一部分。非常感谢。 - pavan309
1
这个答案需要被标记为正确的答案! - haik.ampardjian
1
这对我不起作用。有人能建议一下,还有什么可以做来解决这个问题吗?谢谢。 - Aanchal Chaurasia
显示剩余5条评论

69

从评论转为回答。

Fabric 的 Mike 在这里。如果您在 Mac 应用程序中备份,然后点击左上角的箭头,再点击“+ 新应用程序”,那么它将引导您重新添加所有内容。


我有相关问题。我在旧的 Mac 上有个项目,添加了 Fabric并使用 Beta 创建了构建,按照dos中所述,不要将框架复制到项目中,我没有这样做。该项目在旧的 Mac 上运行良好,但当我将 repo 克隆到另一个 Mac 上时,我无法编译。我的应用程序虽然显示在新 Mac 的列表中,但卡在“为帮助配置您的项目,请按⌘B现在构建”的界面上,因为 fabric.h 丢失。有什么建议吗?我尝试添加新应用程序,但出现错误屏幕,并提示联系支持 :( - Alok C
1
我尝试添加新的应用程序,但它已经在列表中显示我的应用程序。首先,我从未在新机器上拥有该项目。如果它从fabric网站读取正常,但是当我卡在构建上时,旋转器正在等待项目编译,但由于缺少Fabric.h,它不会编译。这种情况发生在所有项目中。只要我将repo克隆到除主机机器(其中添加了fabric到项目中)以外的其他地方,所有项目都无法运行。 - Alok C
9
@MikeB,我们能否在网页上创建应用程序并使用Cocoapods?我不喜欢Fabric Mac应用程序。 - onmyway133
3
你们解决这个问题了吗?我也遇到了同样的问题,但我无法按照上面的步骤进行,因为我无法构建我的应用程序,出现了“找不到 Fabric 框架”的错误。同时,我也希望能够在 Cocoapods 中使用 Fabric。 - berilcetin
你能给我发一封邮件到support@,详细说明一下你的项目是如何设置的,以及包含了哪些框架吗? - Mike Bonnell
显示剩余12条评论

25
如果您检查资源导航器,您可能会看到以下消息:
“DEBUG_INFORMATION_FORMAT 应设置为 dwarf-with-dsym 用于所有配置。 这也可能是时间问题,请确保 Fabric 执行脚本构建阶段是最后一个构建阶段,并且没有其他脚本将 dSYM 从 Xcode 生成的位置移动到其他位置。无法在路径中处理 eCreditWebWrapper.app.dSYM”
进入“构建设置”并搜索“调试信息格式”。 确保“调试”设置为“DWARF with dSYM 文件”。
如果没有dSYM文件,则Fabric将无法正常工作。

6
关于Xcode 10.2.1,通过Fabric Mac应用程序自动安装将不再起作用。新应用程序无法通过新应用程序逐步指南添加。
您必须遵循手动安装说明。下载并将2个框架添加到Xcode工作区中,然后添加运行构建脚本阶段(和相关的Fabric代码),然后构建应用程序。最后(非常重要),在实际设备上运行应用程序
一旦应用程序成功启动,新的应用程序信息将在Fabric仪表板以及Fabric Mac应用程序中可用(需要重新启动应用程序才能查看新应用程序)。
以下是步骤:
  1. 下载这两个框架
  2. 将它们拖到你的项目中,放在 App Delegate 所在的位置(确保勾选了“复制所需的项目”)
  3. 在 Xcode 中编译项目/工作区
  4. 按照这里的指示添加“运行脚本阶段”;注意,Xcode 10+需要在输入文件中进行额外配置
  5. 在 App Delegate 中添加所需的import和初始化代码
  6. Info.plist中添加 Fabric API 密钥
  7. 再次编译
  8. 在真实设备上运行应用程序。您将在 Xcode 日志中看到Crashlytics一行。如果没有日志出现,请检查您的活动方案是否包含OS_ACTIVITY_MODE设置。如果当前设置为disabled,请将其设置为default
  9. 如果出现 Crashlytics 行,则表示手动安装正在工作;您将在 Fabric 在线仪表板上看到您的应用程序。

我已经按照指示做了,但仍然无法正常工作。其他建议的解决方案也都不起作用。你有什么想法吗? - Ibrahim
我在我的回答中添加了步骤。希望能有所帮助。 - Raptor
嗨@Raptor,我发现最新的Xcode版本有些问题...我按照你的步骤操作,日志中出现了以下内容:[Crashlytics] Version 3.13.4 (143) [Crashlytics] Running on iPhone10,6, 12.2.0 (16E227) [Fabric] Initialized with kit versions: { "com.twitter.answers.ios" = "1.4.1"; "com.twitter.crashlytics.ios" = "3.13.4"; "io.fabric.sdk.ios" = "1.10.2"; } [Fabric] settings downloaded successfully ....但是仪表板上仍然没有显示。 - emiliomarin
它应该显示在 Fabric 仪表板中。确保您在仪表板中选择了正确的应用程序。 - Raptor
在设备上运行应用程序非常重要。为了获得我的第一个崩溃报告,有必要实现强制崩溃的代码,然后重新部署到设备上(而不是在设备本身上重新打开应用程序),因为通过XCode重新启动应用程序才会发送崩溃报告。 - Pigpocket

5
我已通过以下方式解决了这个问题。按照上面的建议,我开始向Crashlytics添加新应用程序。当我到达添加新的“运行脚本”构建阶段时,我只是复制并粘贴了该文本到以前创建的Crashlytics中。 我还取消了“仅在安装时运行脚本”的勾选。 完成后,我取消了添加新应用程序并返回升级。此时,构建应用程序可以让您进入下一步,您不会再卡在那个屏幕上了。

1
也没有帮助。 - Dmitry

5

我也曾遇到Build阶段的问题。

我取消了"仅在安装时运行脚本"的选项,然后再次按下command+B,就成功跳过了这一步。


这就是我需要做的全部!比重新创建一个新应用程序并重新安装所有东西要简单得多... - Jake T.

5
如果脚本没有运行,可能是因为您在运行脚本部分勾选了“仅在安装时运行脚本”选项。希望对您有所帮助。

在Xcode 12中,它被称为“基于依赖分析”。当我将其取消勾选时,它开始对我起作用。 - Yevgeniy Leychenko

3

TL;DR

点击您的scheme -> 编辑scheme -> 将构建配置设置为“发布”

说明:

最受欢迎的答案听起来大致正确,但是有些情况下,您在调试构建中就不需要crashlytics(谁想要在开发和实验代码时发送崩溃呢?)。在这种情况下,您应该通过检查调试编译标志(超出本答案的范围)来禁用crashlytics,并在第一次安装时将应用程序构建为发布版本,以让crashlytics知道您已经构建了应用程序。


2
如果您使用的是Xcode 10

打开项目导航 -> 选择您的项目 -> Targets(目标) -> Build Phases(构建阶段) -> 选中Fabric的Run Script(运行脚本) -> 输入文件(Input Files) -> "+"(添加输入文件) -> 清空字段并粘贴以下内容:

$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

请务必删除此处内容:$(SRCROOT)/

进入图片描述


2

您需要检查部署目标版本,因为 "Fabric 的最低 iOS 版本是 6.0"。


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