未找到 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对我来说,这很有效:
从您的项目中删除结构和 crashlytics 框架,并从磁盘中删除我们项目的文件。
如果您为以下内容添加了appdelegate.m
文件中的行,请注释它们:
import Fabric/Fabric.h
import Crashlytics/Crashlytics.h
和
[Fabric with:@[CrashlyticsKit]];
在fabric app中,选择“New app”,然后选择你的Xcode项目文件
重新复制构建脚本并按照说明进行构建。构建步骤是您需要注释上述行的原因 - 如果您将这些行留在其中,它将无法正常工作。
构建脚本运行后,它会提示您将框架从应用程序窗口拖到项目导航器中。这会将框架的最新版本(包括 .h 文件)复制到您的项目中
我尝试过手动下载,并从其他项目复制,但这是我在丢失应用程序的框架文件后恢复的唯一方法。
【讨论】:
【参考方案5】:就我而言,框架位于项目文件夹中,但不在项目导航器中。我将它拖到项目中,一切正常。
【讨论】:
【参考方案6】:签入后,我在与分布式团队(通过 github)合作时遇到了这个问题然后签出 Crashlytics
。 Crashlytics.framework
里面只有一个文件夹——“版本”。您需要将Crashlytics.framework
中的内容的一个版本保存到另一个位置,然后稍后将它们复制粘贴到Crashlytics.framework
。
【讨论】:
【参考方案7】:从项目和磁盘中删除 Crashlytics.framework。复制并再次添加。它帮助了我。
【讨论】:
当您将其复制回时,请确保将其添加到正确的目标并选中“如果需要则复制”。这是一个愚蠢的错误,我只是忽略了它,哈哈。【参考方案8】:就我而言,我是通过 Mac 应用程序从旧的 Crashlytics 安装迁移到 Cocoapods。这个问题的很多答案都建议完全删除所有内容并重新开始。我开始这样做,并注意到在 Fabric's documentation 中找到的代码与 Fabric 应用程序中显示的代码之间存在差异,在该步骤中它告诉您将什么复制到您的运行脚本构建阶段。
Fabric 的文档用双引号将整个字符串括起来:"$PODS_ROOT/Fabric/Fabric.framework/run <Your_API_Key> <Your_Build_Secret>"
Fabric 应用程序在 run
可执行文件的路径周围只有双引号:"$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>
【讨论】:
【参考方案9】:我更改了工作文件夹的名称,但 Craslytics 失败。在构建设置(搜索路径)中检查此项。
祝你好运!
【讨论】:
【参考方案10】:我尝试使用框架搜索路径并重新定位和重新连接框架文件;检查了构建设置(Link binary with libraries 部分),但错误仍然存在。
最后,我重新安装了框架,只需要 2-3 分钟。问题可能是由于您已将 Crashlytics.framework 从根目录重新定位到另一个子文件夹,但我不确定确切原因。
删除与 Crashlytics 相关的所有内容 启动 crashlytics 应用,登录并选择您的项目 添加运行脚本 拖放 .framework 文件(我已将其保存在根文件夹中) 添加import
和 startWithAPIKey
语句回来
【讨论】:
【参考方案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 文件的主要内容,如果未能解决你的问题,请参考以下文章
Crashlytics 使 TestFlight 应用程序崩溃,但未找到任何崩溃日志