未找到 Crashlytics 文件

Posted

技术标签:

【中文标题】未找到 Crashlytics 文件【英文标题】:Crashlytics file not found 【发布时间】:2013-07-19 05:16:36 【问题描述】:

最近打开了一个自己编译并提交给苹果的项目。

我已经有几个月没有碰它了,但是我在以下位置遇到了这个奇怪的编译错误:

#import <Crashlytics/Crashlytics.h>

错误显示:

'Crashlytics/Crashlytics.h' file not found

显然找不到该框架,但我很困惑为什么几个月前该项目正在工作时,它突然停止了。

有什么建议吗?

Xcode:4.6.3 Mac OS X:10.8.4

【问题讨论】:

该文件是否存在于您的文件系统中? 几个月前我发布该项目时确实如此,但我没有删除它。不过,我会看看——它在哪里? 在另一台计算机上从 SVN 检查源代码时遇到了这个问题,@Lukasz 回答对我有用。 如果你升级到 Xcode 5.1,你现在必须得到 arm64 平台目标的网格。只需按照以下说明操作:***.com/a/22370158/481621 我遇到了同样的问题,但是使用 xctool - 上面的解决方案没有帮助 - 有什么想法吗?在 xcode 中构建... 【参考方案1】:

只需将$(SRCROOT) 添加到项目构建设置(搜索路径)中的框架搜索路径

Crashlytics 安装过程会将其 Crashlytics.framework 放到您的项目文件夹中(或创建符号链接)。

如果您将 Crashlytics.framework 移动到项目文件夹层次结构的更深处 - 将“递归”设置为右侧或直接指向其在 Header Search Paths 中的父文件夹:

$(SRCROOT)/Path/to/the/folder/containing/Crashlytics.framework

【讨论】:

对我不起作用,但 "$(PROJECT_DIR)" 起作用了。可能是因为我使用的是 Cocoapods? 我的问题是我不小心在我的框架搜索路径中放了一个绝对路径,所以当我在新机器上检查代码时,它找不到那个路径。 我从未真正检查过这一点,但鉴于赞成票的数量,我将其标记为正确。 我遇到了同样的问题,但是使用 xctool - 上面的解决方案没有帮助 - 有什么想法吗?在 xcode 中构建...【参考方案2】:

从您的项目和磁盘中删除框架。检查您是否拥有最新版本的 Fabric 插件。

使用以下命令将框架从插件文件夹复制到桌面:

ditto -xk ~/Library/Caches/com.crashlytics.mac/5b91b14e832a7b1c29441ec5ba109810/sdks/ios/com.twitter.crashlytics.ios-default.zip ~/Desktop/

ditto -xk ~/Library/Caches/com.crashlytics.mac/5b91b14e832a7b1c29441ec5ba109810/sdks/ios/io.fabric.sdk.ios-default.zip ~/Desktop/

将框架从桌面添加到您的项目。

信息来自:https://twittercommunity.com/t/error-upgrading-from-crashlytics-on-ios/36196/2

【讨论】:

这节省了见面时间!谢谢你。 :) 你拯救了我的一天。谢谢【参考方案3】:

我建议只使用 CocoaPods 来添加 Crashlytics 框架。不再需要关心路径。

Pod 文件:

pod 'Crashlytics', '~> 3.4.1'

dSYM 上传的脚本构建阶段:

./Pods/Crashlytics/iOS/Crashlytics.framework/run <your_crashlytics_id>

进口:

#import <Crashlytics/Crashlytics.h>

【讨论】:

我们曾经将 CocoaPods 用于 Crashlytics/Fabric...它曾经很稳定,但自从更改为 Fabric 后它经常中断。请记住,Crashlytics 的 pod 不是由 Twitter/Crashlytics 维护的。当它停止工作时,他们会告诉你做的第一件事就是从他们愚蠢的客户端重新安装。我建议寻求官方的 CocoaPod 支持。 将#import 添加到我的桥接头中【参考方案4】:

对我来说,这很有效:

从您的项目中删除结构和 crashlytics 框架,并从磁盘中删除我们项目的文件。

如果您为以下内容添加了appdelegate.m 文件中的行,请注释它们:

import Fabric/Fabric.h
import Crashlytics/Crashlytics.h

[Fabric with:@[CrashlyticsKit]];

在fabric app中,选择“New app”,然后选择你的Xcode项目文件

重新复制构建脚本并按照说明进行构建。构建步骤是您需要注释上述行的原因 - 如果您将这些行留在其中,它将无法正常工作。

构建脚本运行后,它会提示您将框架从应用程序窗口拖到项目导航器中。这会将框架的最新版本(包括 .h 文件)复制到您的项目中

我尝试过手动下载,并从其他项目复制,但这是我在丢失应用程序的框架文件后恢复的唯一方法。

【讨论】:

【参考方案5】:

就我而言,框架位于项目文件夹中,但不在项目导航器中。我将它拖到项目中,一切正常。

【讨论】:

【参考方案6】:

签入后,我在与分布式团队(通过 github)合作时遇到了这个问题然后签出 CrashlyticsCrashlytics.framework 里面只有一个文件夹——“版本”。您需要将Crashlytics.framework 中的内容的一个版本保存到另一个位置,然后稍后将它们复制粘贴到Crashlytics.framework

【讨论】:

【参考方案7】:

从项目和磁盘中删除 Crashlytics.framework。复制并再次添加。它帮助了我。

【讨论】:

当您将其复制回时,请确保将其添加到正确的目标并选中“如果需要则复制”。这是一个愚蠢的错误,我只是忽略了它,哈哈。【参考方案8】:

就我而言,我是通过 Mac 应用程序从旧的 Crashlytics 安装迁移到 Cocoapods。这个问题的很多答案都建议完全删除所有内容并重新开始。我开始这样做,并注意到在 Fabric's documentation 中找到的代码与 Fabric 应用程序中显示的代码之间存在差异,在该步骤中它告诉您将什么复制到您的运行脚本构建阶段。

Fabric 的文档用双引号将整个字符串括起来:"$PODS_ROOT/Fabric/Fabric.framework/run &lt;Your_API_Key&gt; &lt;Your_Build_Secret&gt;"

Fabric 应用程序在 run 可执行文件的路径周围只有双引号:"$PODS_ROOT/Fabric/Fabric.framework/run" &lt;Your_API_Key&gt; &lt;Your_Build_Secret&gt;

因此,在您删除所有内容并重新开始之前,请尝试将您的 Run Script Build Phase 更新为:

"$PODS_ROOT/Fabric/Fabric.framework/run" &lt;Your_API_Key&gt; &lt;Your_Build_Secret&gt;

【讨论】:

【参考方案9】:

我更改了工作文件夹的名称,但 Craslytics 失败。在构建设置(搜索路径)中检查此项。

祝你好运!

【讨论】:

【参考方案10】:

我尝试使用框架搜索路径并重新定位和重新连接框架文件;检查了构建设置(Link binary with libraries 部分),但错误仍然存​​在。

最后,我重新安装了框架,只需要 2-3 分钟。问题可能是由于您已将 Crashlytics.framework 从根目录重新定位到另一个子文件夹,但我不确定确切原因。

删除与 Crashlytics 相关的所有内容 启动 crashlytics 应用,登录并选择您的项目 添加运行脚本 拖放 .framework 文件(我已将其保存在根文件夹中) 添加 importstartWithAPIKey 语句回来

【讨论】:

【参考方案11】:
    完全删除项目上的 Crashlytics 框架,在 App Build Phases Run Script 中包含 shell 脚本。 按照指南重新安装 Fabric,一切都会好起来的。

【讨论】:

【参考方案12】:

我之前升级到 Fabric 并没有遇到任何问题。几天后,我重新打开了同一个项目,并遇到了缺少 crashlytics.h 文件的问题。

由于一个非编译项目,我不能简单地从插件重新安装(我有很多 CLS_LOG 消息和对我项目中丢失的 crashlytics.h 文件的引用,删除它们需要很长时间才能允许构建工作 - 重构不会在 CLS_LOG 上工作)。

因此,我从我的项目中删除了 crashlytics.framework,并执行以下操作以直接从插件中恢复它:

    再次下载 Fabric 插件并双击 zip 文件解压缩 Fabric 应用程序。

    右键单击 Fabric 图标并“显示包内容”

    将 Crashlytics.framework 文件夹复制到您的桌面,然后通过 File -> Add Files to ... 将其重新添加到您的项目中。

如果步骤 3 对您不起作用,您也可以直接将 crashlytics.framework 添加到您计算机上的项目文件夹中,然后也可以通过 Xcode 将其添加到您的项目列表中,与步骤 3 相同,但取消选中“复制项目”如果需要”,因为您已经自己将文件放在那里。

然后我的项目编译并再次正常工作。

关于文件丢失原因的猜测?升级过程的一部分让我删除了旧框架,然后从插件运行脚本等。我想后来当我清空垃圾箱时,一些参考资料丢失了。我还有一个问题,我将 Crashlytics 放入我的 .gitignore 文件中,所以它从我所有的项目中消失了,每次提交都不是很好。

希望这对某人有所帮助!

【讨论】:

以上是关于未找到 Crashlytics 文件的主要内容,如果未能解决你的问题,请参考以下文章

项目中疑难Crash问题集锦

Crashlytics 使 TestFlight 应用程序崩溃,但未找到任何崩溃日志

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

未生成 Crashlytics 映射文件

Xcode 10 Crashlytics 安装

如何在 FirebaseCrashlytics iOS 最新升级中强制崩溃?