最近打开了一个我编译并提交给Apple的项目。
我已经有几个月没有碰它了,但是我在以下位置遇到了这个奇怪的编译错误:
#import <Crashlytics/Crashlytics.h>
错误内容如下:
'Crashlytics/Crashlytics.h' file not found
显然找不到该框架,但我很困惑为什么几个月前该项目正在工作时,它突然停止了。
任何建议为什么?
Xcode:4.6.3 Mac OS X:10.8.4
最近打开了一个我编译并提交给Apple的项目。
我已经有几个月没有碰它了,但是我在以下位置遇到了这个奇怪的编译错误:
#import <Crashlytics/Crashlytics.h>
错误内容如下:
'Crashlytics/Crashlytics.h' file not found
显然找不到该框架,但我很困惑为什么几个月前该项目正在工作时,它突然停止了。
任何建议为什么?
Xcode:4.6.3 Mac OS X:10.8.4
只需添加$(SRCROOT)
到项目构建设置(搜索路径)中的框架搜索路径。
Crashlytics 安装过程会将其Crashlytics.framework
放到您的项目文件夹中(或创建符号链接)。
如果您将 Crashlytics.framework 移至项目文件夹层次结构中更深的位置 - 将“递归”设置为右侧或直接指向其父文件夹Header Search Paths
:
$(SRCROOT)/Path/to/the/folder/containing/Crashlytics.framework
从您的项目和磁盘中删除框架。检查您是否拥有最新版本的 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
我建议只使用 CocoaPods 来添加 Crashlytics 框架。不再需要关心路径。
播客文件:
pod 'Crashlytics', '~> 3.4.1'
dSYM 上传的脚本构建阶段:
./Pods/Crashlytics/iOS/Crashlytics.framework/run <your_crashlytics_id>
进口:
#import <Crashlytics/Crashlytics.h>
对我来说,这有效:
从您的项目中删除结构和 crashlytics 框架,并从磁盘中删除我们项目的文件。
appdelegate.m
如果您为以下内容添加了这些行,请评论文件中的行:
import Fabric/Fabric.h
import Crashlytics/Crashlytics.h
和
[Fabric with:@[CrashlyticsKit]];
在 fabric 应用程序中,选择“New app”,然后选择您的 Xcode 项目文件
重新复制构建脚本并按照说明进行构建。构建步骤是您需要注释上述行的原因 - 如果您将这些行留在其中,它将无法工作。
构建脚本运行后,它会提示您将框架从应用程序窗口拖到项目导航器中。这会将最新版本的框架(包括 .h 文件)复制到您的项目中
我曾尝试手动下载并从其他项目复制,但这是在丢失应用程序的框架文件后我可以恢复的唯一方法。
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.
从项目和磁盘中删除 Crashlytics.framework 。复制并再次添加。它帮助了我。
在签入然后签出后,我与分布式团队(通过 github)合作时遇到了这个问题Crashlytics
。Crashlytics.framework
里面只有一个文件夹——“版本” 。您需要将其中的内容版本保存Crashlytics.framework
到另一个位置,然后将它们复制粘贴到Crashlytics.framework
以后。
就我而言,我是通过 Mac 应用程序从旧的 Crashlytics 安装迁移到 Cocoapods。这个问题的很多答案都建议完全删除所有内容并重新开始。我开始这样做,并注意到在Fabric 文档中找到的代码与 Fabric 应用程序中显示的代码之间存在差异,在该步骤中它告诉您将什么复制到您的运行脚本构建阶段。
Fabric 的文档在整个字符串周围有双引号:"${PODS_ROOT}/Fabric/Fabric.framework/run <Your_API_Key> <Your_Build_Secret>"
run
Fabric 应用程序在可执行文件的路径周围只有双引号:"${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>
我更改了工作文件夹的名称,但 Craslytics 失败。在构建设置(搜索路径)中检查此项。
祝你好运!
我尝试使用框架搜索路径并重新定位和重新连接框架文件;检查了构建设置(Link binary with libraries 部分),但错误仍然存在。
最后,我重新安装了框架,只需要2-3分钟。问题可能是由于您已将 Crashlytics.framework 从根目录重新定位到另一个子文件夹,但我不确定确切原因。
import
andstartWithAPIKey
语句我之前已经升级到 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 文件中,因此它从我所有提交的项目中消失了,这不是很好。
希望这对某人有帮助!