58

最近打开了一个我编译并提交给Apple的项目。

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

#import <Crashlytics/Crashlytics.h>

错误内容如下:

'Crashlytics/Crashlytics.h' file not found

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

任何建议为什么?

Xcode:4.6.3 Mac OS X:10.8.4

4

12 回答 12

87

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

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

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

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

于 2013-08-29T09:08:30.427 回答
25

从您的项目和磁盘中删除框架。检查您是否拥有最新版本的 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

于 2015-05-13T12:02:27.587 回答
21

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

播客文件:

pod 'Crashlytics', '~> 3.4.1'

dSYM 上传的脚本构建阶段:

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

进口:

#import <Crashlytics/Crashlytics.h>
于 2014-10-01T07:46:04.443 回答
4

对我来说,这有效:

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

appdelegate.m如果您为以下内容添加了这些行,请评论文件中的行:

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

[Fabric with:@[CrashlyticsKit]];

在 fabric 应用程序中,选择“New app”,然后选择您的 Xcode 项目文件

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

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

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

于 2015-06-21T01:08:09.540 回答
1

In my case, the Framework was in the project folder, but not in the Project Navigator. I dragged it to the project and everything worked fine.

于 2014-10-01T07:30:46.663 回答
1

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

于 2015-03-27T12:26:30.840 回答
1

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

于 2014-10-13T18:04:47.453 回答
1

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

Fabric 的文档在整个字符串周围有双引号:"${PODS_ROOT}/Fabric/Fabric.framework/run <Your_API_Key> <Your_Build_Secret>"

runFabric 应用程序在可执行文件的路径周围只有双引号:"${PODS_ROOT}/Fabric/Fabric.framework/run" <Your_API_Key> <Your_Build_Secret>

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

"${PODS_ROOT}/Fabric/Fabric.framework/run" <Your_API_Key> <Your_Build_Secret>

于 2015-08-26T18:11:15.917 回答
0

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

祝你好运!

于 2013-11-06T10:50:10.810 回答
0

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

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

  • 删除有关 Crashlytics 的所有内容
  • 启动 crashlytics 应用程序,登录并选择您的项目
  • 添加运行脚本
  • 拖放 .framework 文件(我已将其保存在根文件夹中)
  • 添加importandstartWithAPIKey语句
于 2015-01-20T14:42:01.140 回答
0
  1. 完全删除项目上的 Crashlytics 框架,在 App Build Phases Run Script 中包含 shell 脚本。
  2. 按照指南重新安装 Fabric,一切都会好起来的。
于 2015-06-12T08:15:30.190 回答
0

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

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

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

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

  2. 右键单击 Fabric 图标和“显示包内容”

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

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

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

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

希望这对某人有帮助!

于 2015-06-25T04:47:49.210 回答