iOS 中的 Crashlytics 不会继续通过 Fabric 应用程序中的“构建您的项目”

Posted

技术标签:

【中文标题】iOS 中的 Crashlytics 不会继续通过 Fabric 应用程序中的“构建您的项目”【英文标题】:Crashlytics in iOS won't proceed past "Build Your Project" in Fabric app 【发布时间】:2015-03-22 22:32:21 【问题描述】:

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

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

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

构建它

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

【问题讨论】:

@MikeB:我所看到的只是“现在让我们更新 Crashlytics”,没有稍后实际添加新应用程序的选项。由于重复的符号,更新流程不起作用。如何获得适用于 Fabric 的正确版本的 Crashlytics 框架? @MatejBalantič 很奇怪听到您看到重复的符号。尝试删除框架的当前副本。此外,我之前提到的步骤也可以用作修复模式,让您恢复正常运行。 我想说这里的主要问题是当您使用.xcworkspace 尝试此操作时。原因是如果你从 Crashlytics 打开它会打开你的.xcxcodeproj 使用 Xcode 10.2,下面的答案再次停止工作。必须使用手动方法安装 Fabric。 @Raptor 是对的。这停止使用带有 Cocoapods 的 Xcode 10.2。没有尝试手动安装 Fabric(这不是我想做的事情)。 【参考方案1】:

从评论转向答案。

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

【讨论】:

我有相关问题。我在旧 mac 有项目。添加了使用 Beta 和所有好东西创建的织物。如dos中所述。不要在项目中复制框架。我没有。项目在旧 Mac 上运行良好。但是当我将 repo 克隆到另一台 mac 时。我只能编译。我的应用程序显示在新 Mac 上的列表中。它停留在“为了帮助配置您的项目,请现在按 ⌘B 构建它”,因为我无法构建它,因为缺少 fabric.h。对我有什么建议吗?我尝试使用添加新应用程序。得到错误屏幕说可以添加。联系支持:( 在获取新文件时听起来有些东西已经损坏。使用我上面的答案应该有助于在新机器上修复它,而不会影响其他任何东西。 我尝试添加已经在列表中显示我的应用的新应用。首先我从来没有在新机器上做过那个项目。如果它从面料网站上阅读很好。但是后来我卡在构建上,并且微调器正在旋转等待项目以进行编译,因为 Fabric.h 丢失了它不会。它发生在所有项目中。一旦我在除主机(将结构添加到项目中)之外的其他地方克隆存储库。都坏了。 @MikeB 我们可以在网络上创建应用程序并使用 Cocoapods,我不喜欢 Fabric Mac 应用程序 你们解决这个问题了吗?我有同样的问题,无法按照您的上述步骤操作,因为“找不到框架”错误导致我无法构建我的应用程序。而且绝对喜欢在 Cocoapods 中使用 Fabric。【参考方案2】:

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

在此之后,我取消了添加新应用程序并继续进行升级。此时,构建应用程序可以让您进入下一步,您不会再卡在该屏幕上。

【讨论】:

也无济于事。【参考方案3】:

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

./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

【讨论】:

【参考方案4】:

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

./Fabric.framework/run <api key>

在我的项目中。一旦我把它放回去,它就会完美地工作。我还清理了我的项目并删除了派生数据以确保安全。

【讨论】:

它必须在第 1 行【参考方案5】:

在我的情况下,我正确执行了所有步骤,但卡在了“添加构建阶段”步骤。 然后我刚刚重新启动了 fabric,一切正常

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

1) 只需重新启动 Fabric、Xcode 和您的 Mac。 2)另外,如果你使用 Cocoapods 改变构建阶段线从

./Crashlytics.framework/run [yourAPIKey] 

"$PODS_ROOT/Fabric/run" [yourAPIKey]

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

【讨论】:

哇。我只花了一个小时尝试调试它,这就是原因。 Fabric 应用程序没有响应的部分,以为它已经崩溃了,但我只是没有足够的耐心。【参考方案6】:

您必须检查您的部署目标版本,因为“Fabric 的最低 iOS 版本是 6.0”

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

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

比较这两个运行脚本文件,它们有很大的不同,但来自 Cocoapods 的运行脚本不是纯文本文件,而且不可读。所以我不确定脚本之间有什么不同,但我们在使用相同版本的 Fabric 时不知何故得到了不同版本的脚本。

【讨论】:

【参考方案9】:

我也被困在构建阶段。

我也取消了"Run script only when installing"的勾选,再次按下command+B,然后我就进入了下一步。

【讨论】:

这就是我需要做的!比重新创建一个新应用并重新安装所有内容要简单得多......【参考方案10】:

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

【讨论】:

【参考方案11】:

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

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

【讨论】:

也不要忘记这个~/Library/Caches/io.fabric.sdk.mac.data【参考方案12】:

转到文件夹/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/&lt;CURRENT_IOS_SDK&gt;/usr/lib/ 并删除所有 .dylib 文件。

它对我有用。

【讨论】:

【参考方案13】:

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

【讨论】:

在 Xcode 12 中它被称为“基于依赖分析”。当我取消选中它时,它开始为我工作。【参考方案14】:

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

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

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

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

【讨论】:

【参考方案15】:

进入目标的构建设置。 找到“调试信息格式”。 在调试和发布中将其从“DWARF”设置为“DWARF with dSYM File”

【讨论】:

谢谢!这是 Xcode 10 和 Mojave 的修复程序! 这是我一直在寻找的答案,没有其他工作! 这应该是文档的一部分。非常感谢。 这个答案需要被标记为正确的! 这对我不起作用。任何人都可以建议,这里还能做些什么来解决这个问题?谢谢【参考方案16】:

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

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

【讨论】:

将构建目标设置为“Generic iOS Device”并可能将Debug Information Format设置为“DWARF with dSYM File”实际上解决了问题对我来说【参考方案17】:

如果您要复制目标,请从构建阶段删除运行脚本并重新添加以解决问题。

【讨论】:

【参考方案18】:

如果您使用 Xcode 10

Project Navigator -> your project -> Targets -> Build Phases -> your Run Script for Fabric -> Input Files -> "+" (add input file) -> clear field and past this line:

$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

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

【讨论】:

【参考方案19】:

如果你有多个目标,

在构建项目之前检查您的架构选择是否正确。

【讨论】:

【参考方案20】:

TL;DR

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

解释:

The most voted answer 听起来不错,但在某些情况下,您在调试版本中不需要崩溃分析(谁希望在您开发和试验代码时发送崩溃?)。在这种情况下,您应该通过检查调试编译标志(超出此答案的范围)来禁用 crashlytics,并在安装期间首次构建应用程序以让 crashlytics 知道您构建了应用程序。

【讨论】:

【参考方案21】:

对于 Xcode 10。将应用的构建 Info.plist 位置添加到构建阶段的输入文件字段:

$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

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

【讨论】:

【参考方案22】:

对于 Xcode 10.2.1,通过 Fabric Mac 应用程序自动安装将不再起作用。 无法通过新应用分步指南添加新应用。

您必须关注manual installation instructions。下载 2 个框架并将其添加到您的 Xcode 工作区中,然后添加 Run Build Script 阶段(和相关的 Fabric 代码),然后构建应用程序。最后(非常重要),在实际设备中运行应用

App 启动成功后,Fabric 仪表盘和 Fabric Mac App 中都会显示新 App 信息(需要重新启动 App 才能看到新 App)。


步骤如下:

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

【讨论】:

我已经按照指示完成了。还是行不通。其他建议的解决方案也不起作用。你有什么想法吗? 我已在答案中添加了步骤。希望对您有所帮助。 嗨@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 ] 设置下载成功`....但仍然没有显示在我的仪表板上 它应该显示在 Fabric 仪表板中。确保在仪表板中选择正确的应用程序。 在设备上运行应用程序至关重要。为了获得我的第一个崩溃报告,有必要实现强制崩溃的代码,然后重新部署到设备(而不是在设备本身上重新打开应用程序),因为通过 XCode 重新启动应用程序是发送崩溃报告的原因。 【参考方案23】:

原来我没有足够的权限在 Fabric 中创建新项目。 从Member 升级到Admin 解决了这个问题。

【讨论】:

【参考方案24】:

在我的情况下,从帮助中删除应用程序。 1) 从 Fabric 中删除应用程序。 2) 再次按照所有步骤添加应用并安装 Crashlytics。

【讨论】:

【参考方案25】:

没有任何帮助。现在 Fabric 捕获了我的存档创建。但我通过 fastlane 的 build_app 创建档案。

【讨论】:

【参考方案26】:

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

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

【讨论】:

以上是关于iOS 中的 Crashlytics 不会继续通过 Fabric 应用程序中的“构建您的项目”的主要内容,如果未能解决你的问题,请参考以下文章

Crashlytics iOS Beta 卡在 Fabric 应用程序中

Crashlytics/Fabric - 删除帐户/项目后我的应用程序会崩溃吗?

crashlytics 中的两个应用

我们可以在 iOS 的后台线程上引导 Crashlytics 吗?

在 iOS 应用程序运行时启用/禁用 Crashlytics

当有另一个崩溃报告时,Crashlytics 不会发送崩溃报告 (Umeng)