iOS中的Crashlytics无法通过Fabric应用程序中的“构建您的项目”进行


74

我正在为我的iOS应用安装Crashlytics。我通过他们的站点链接下载了该文件,并完成了集成框架,添加运行脚本等所有步骤。

我遇到了一个问题,因此我删除了框架,并决定重新开始并尝试全新安装。但是Fabric应用程序已更新为新版本,现在当我尝试将Crashlytics重新安装到我的应用程序中时,它没有给我重新安装框架的选项。它直接从单击“安装”转到“构建您的项目”屏幕,我无法通过它。

为了帮助配置您的项目,请立即按⌘B进行构建

我按⌘B,它建立了,没有任何反应。我认为问题是因为我从项目中删除了Crashlytics和Fabric框架,但找不到重新添加它们的方法。Fabric应用程序没有给我这个选择。


1
@MikeB:我所看到的只是“现在让我们更新Crashlytics”,没有选择以后再实际添加新的应用程序。由于符号重复,更新流程不起作用。如何获得与Fabric兼容的正确版本的Crashlytics框架?
MatejBalantič15年

@MatejBalantič奇怪,听说您看到重复的符号。尝试删除框架的当前副本。同样,我前面提到的步骤也可以用作修复模式,以使您重新启动并运行。
Mike Bonnell

我想说的主要问题是当您尝试使用时.xcworkspace。原因是,如果您从Crashlytics打开,则会打开您的.xcxcodeproj
杰克逊(Jacksonkr)

使用Xcode 10.2,以下答案不再起作用。必须使用手动方法安装Fabric。
猛禽

@Raptor是正确的。这停止了​​使用带有Cocoapods的Xcode 10.2。没有尝试手动安装Fabric(这不是我热衷的事情)。
albertodebortoli

Answers:


70

从评论到答案。

来自Fabric的Mike。如果您通过Mac应用程序进行备份,请单击左上角的箭头,然后单击“ + New App”,这将引导您重新添加所有内容。


我有相关的问题。我在旧Mac上有项目。添加了使用Beta和所有其他好东西创建的结构。如dos中所述。不要在项目中复制框架。我没有 项目在旧Mac上运行良好。但是当我将存储库克隆到另一个Mac时。我可以编译。我的应用程序显示在新Mac列表上。它停留在“为了帮助配置您的项目,请立即按⌘B”进行构建,因为缺少fabric.h,因此无法构建。对我有什么建议吗?我尝试使用添加新应用。得到错误屏幕说可以添加。联系支持人员:(
Alix

听起来好像是在获取新文件时损坏了文件。使用上面的回答,也应该会在新计算机上修复它,而不会影响其他任何内容。
Mike Bonnell

1
我尝试在已经在列表中显示我的应用的地方添加新应用。我从来没有在新机器上拥有该项目的第一件事。如果它从面料网站上阅读得很好。但是后来我陷入了困境,微调器正在旋转等待的项目以进行编译,因为Fabric.h丢失了。它在所有项目中都在发生。一旦我在主机以外的其他地方克隆回购协议(将Fabric添加到项目中)。都坏了。
Alix

9
@MikeB我们可以只在网络上创建应用并使用Cocoapods吗,我不喜欢Fabric Mac应用
onmyway133 2015年

3
你们解决了这个问题了吗?我遇到了同样的问题,并且无法按照上述步骤操作,原因是由于“找不到框架”错误,我无法构建我的应用。也绝对喜欢在Cocoapods中使用Fabric。
berilcetin15年

164

进入目标的构建设置。找到“调试信息格式”。在调试和发行版中都从“ DWARF”设置为“带有dSYM文件的DWARF”


7
谢谢!这是Xcode 10和Mojave的修复程序!
标记

这是我一直在寻找的答案,没什么用!
Bogdan Razvan

1
这应该是文档的一部分。非常感谢。
pavan309

1
此答案需要标记为正确答案!
haik.ampardjian,

1
这对我不起作用。任何人都可以提出建议,在这里还可以做些什么来解决这个问题?谢谢
Aanchal Chaurasia

25

如果您检查资源导航器,则可能会看到以下消息:

“对于所有配置,DEBUG_INFORMATION_FORMAT应该设置为dwarf-with-dsym。这也可能是时间问题,请确保Fabric运行脚本构建阶段是最后一个构建阶段,并且没有其他脚本将dSYM从生成它的Xcode位置移出。无法在路径“处处理eCreditWebWrapper.app.dSYM”

转到“构建设置”,然后搜索“调试信息格式”。确保将“调试”设置为“带有dSYM文件的DWARF”。

没有dSYM文件,Fabric将无法工作。


6

至于Xcode 10.2.1,通过Fabric Mac应用程序的自动安装将不再起作用。新的应用程序不能经由新的应用程序步一步的指导加入。

您必须遵循手动安装说明。下载2个框架并将其添加到Xcode工作区中,然后添加“运行构建脚本”阶段(和相关的Fabric代码),然后构建App。最后(非常重要),请在实际设备中运行该应用程序

成功启动应用程序后,新的应用程序信息将在Fabric仪表板以及Fabric Mac App中可用(需要重新启动该应用程序以查看新应用程序)。


步骤如下:

  1. 下载2个框架
  2. 拖到您的应用程序代表所在的项目中(确保选中“如有需要,复制项目”)
  3. 在Xcode中编译项目/工作区
  4. 按照此处的说明添加“运行脚本阶段” ;请注意,Xcode 10+需要在以下位置进行额外配置Input Files
  5. import在App Delegate中添加所需的代码和初始化代码
  6. 在中添加Fabric API密钥 Info.plist
  7. 再次编译
  8. 在真实设备中运行该应用程序。您将Crashlytics在Xcode日志中看到该行。如果没有日志出现,请检查您的活动方案是否包含OS_ACTIVITY_MODE设置。default如果当前设置为,请将其设置为disabled
  9. 如果出现“ Crashlytics”行,则表明手动安装正在运行;您将看到您的应用程序出现在Fabric在线仪表板上。

我已经按照指示完成了。还是行不通。其他建议的解决方案也不起作用。你有什么主意吗
Ibrahim

我已经在答案中添加了步骤。希望能帮助到你。
猛禽

嗨,@ 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]设置已成功下载”的内容... ...但仍然没有显示仪表板
emiliomarin

它应该显示在Fabric仪表板中。确保在仪表板上选择正确的应用程序。
猛禽

在设备上运行应用程序至关重要。为了获得我的第一个崩溃报告,有必要实施强制崩溃的代码,然后将其重新部署到设备上(与在设备本身上重新打开应用程序相对),因为通过XCode重新启动应用程序是发送崩溃报告的原因。
Pigpocket

5

我已经通过以下方式解决了这个问题。按照上面的建议,我开始向crashlytics添加一个新应用。当我到达添加新的“运行脚本”构建阶段时,我只是复制了该文本并将其粘贴在上一个(使用Crashlytics创建)上。我还没有选中“仅在安装时运行脚本”。

此后,我取消了添加新应用程序并继续返回到UPGRADE。目前,构建该应用程序可以将您带到下一步,而您不会再被卡在该屏幕上了。


1
也没有帮助。
德米特里

5

我也被困在构建阶段。

我也未选中"Run script only when installing",然后再次按Command + B,然后转到下一步。


这就是我要做的!比重新创建新的应用程序并重新安装所有内容要简单得多...
Jake T.

5

如果脚本未运行,则可能已在运行脚本部分中选中了“仅在安装时运行脚本”。希望对您有所帮助


在Xcode 12中,它称为“基于依赖关系分析”。当我取消选中它时,它开始为我工作。
Yevgeniy Leychenko

3

TL; DR

点击方案->编辑方案->将构建配置设置为“发布”

说明:

投票得最好的答案听起来似乎是对的,但是在某些情况下,您只是不需要在调试版本中使用crashlytics(谁想要在您开发和试验代码时发送崩溃信息?)。在这种情况下,您应该通过检查调试编译标志(超出此答案的范围)来禁用crashlytics,并且在安装过程中首次构建build app进行发布,以使crashlytics知道您已构建app。


2

我今天有同样的问题。问题是我没有运行脚本:

./Fabric.framework/run <api key>

在我的项目中。一旦我把它放回去,那一切就完美地运作了。为了确定,我还清理了我的项目并删除了派生数据。


它必须在#1行
Codetard

2

您必须检查由于“ Fabric的最低iOS版本为6.0”而导致的部署目标版本


2

将构建目标设置为“通用iOS设备”并从“产品”>“存档”菜单中创建存档后,我才能够使Fabric应用程序继续安装过程。

仅仅构建应用程序或在模拟器上运行它似乎并不会触发Fabric应用程序继续运行。


将构建目标设置为“通用iOS设备”,并可能设置调试信息格式“带有dSYM文件的DWARF”实际上为我解决了问题
skofgar

2

如果您使用Xcode 10

项目导航器->您的项目->目标->构建阶段->您的Fabric运行脚本->输入文件->“ +”(添加输入文件)->清除字段并在此行之后:

$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

务必 删除此:$(SRCROOT)/

在此处输入图片说明


1

在“运行脚本”构建阶段,有一个调用:

./Crashlytics.framework/run <your_api_key_here>

也许您添加了一些条件来仅在某些构建上触发它,例如:

releaseConfig="Release"

if [ "$releaseConfig" = "${CONFIGURATION}" ]; then  
    echo "Running Crashlytics"
    ./Crashlytics.framework/run <your_api_key_here>
fi

这样它不仅会触发⌘B

参见https://dev.twitter.com/crashlytics/ios/advanced-setup


1

在我的情况下,我正确地遵循了所有步骤,但是陷入了“添加构建阶段”步骤。然后我刚重启面料,一切正常

另外还有一些其他可能的操作:

1)只需重新启动Fabric,Xcode和Mac。2)同样,如果您使用Cocoapods,则从

./Crashlytics.framework/run [yourAPIKey] 

"${PODS_ROOT}/Fabric/run" [yourAPIKey]

3)构建项目后,如果Fabric将停止响应,请稍等片刻。在我的Mac上花了大约一分钟。


哇。我只花了一个小时尝试调试它,这就是原因。
JRam13,2013年

1
关于Fabric应用程序没有响应的一些信息,以为它已崩溃,但我只是没有足够的耐心。
瑞安

1

谢谢,我通过删除文件夹解决了这个问题:

~ / Library / Caches / com.crashlytics.data
~ / Library / Caches / com.crashlytics.mac

也不要忘记这~/Library/Caches/io.fabric.sdk.mac.data一点
猛禽

0

如果您要添加到测试目标,请交叉验证您添加的运行脚本是否是您的实际目标,直到您将其添加到实际目标后,脚本才会继续进行


0

这里没有任何解决方案对我有用。对我来说,场景是有人将Fabric框架添加到我们的项目中,并将其提交给了仓库。他们计算机上的运行脚本启动/触发了Fabric插件,但在我的计算机上却没有启动/触发,尽管它没有报告错误。

解决方案是创建一个单独的项目,使用Cocoapods下载相同版本的Fabric,用从Cocoapods下载的版本替换项目/仓库中的运行脚本(以及目标运行脚本中引用的脚本)。重建,然后插件将响应。

比较这两个运行脚本文件,它们完全不同,但是来自Cocoapods的运行脚本不是纯文本文件,并且无法读取。因此,我不确定这些脚本之间的区别是什么,但是在使用相同版本的Fabric时,我们不知何故获得了不同版本的脚本。


0

我做错的是将脚本添加到pods项目构建阶段而不是主要项目构建阶段,将其添加到主要项目构建阶段解决了该问题。


0

如果要复制目标,请从构建阶段删除运行脚本,然后再次添加它以解决问题。


0

如果您有多个目标,

在构建项目之前,请检查对Schema的选择是否正确。


0

对于Xcode 10,将应用程序的构建Info.plist位置添加到Build Phase的Input Files字段中:

$(BUILT_PRODUCTS_DIR)/ $(INFOPLIST_PATH)

这解决了我的问题,我希望这可以解决其他问题。


0

原来,我没有足够的权限在Fabric中创建新项目。从升级MemberAdmin解决了该问题。




0

更高版本的Xcode中打开Project 。浪费了几个小时后,这解决了我的问题。

我的项目在Xcode 10.2上构建,而我在Xcode 10.1上运行,但是当我在Xocode 11上运行相同的项目时,构建成功。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.