通过 CocoaPods 集成 Fabric/Crashlytics

Posted

技术标签:

【中文标题】通过 CocoaPods 集成 Fabric/Crashlytics【英文标题】:Integrate Fabric/Crashlytics via CocoaPods 【发布时间】:2015-05-18 05:45:21 【问题描述】:

我尝试,我的 Podfile 如下所示:

pod 'Fabric/Core', '1.2'
pod 'Fabric/Crashlytics', '1.2'

但是当我尝试构建我的应用程序时,构建失败并且我收到一个Shell Script Invocation Error 表示找不到运行脚本:

.../Script-F8D74CB61AB5D7A50013D134.sh: line 2: ./Fabric.framework/run: No such file or directory

是否可以仅使用 CocoaPods 安装 Fabric?

【问题讨论】:

为什么不用Fabric App自动安装SDK并生成你的App ID等? 因为我喜欢通过 Cocoapods 更新外部框架,并且希望将所有东西都放在一个地方。 pod 方法与使用应用程序安装的其他优缺点? 在通过 Fabric 应用程序更新后,我遇到了太多构建错误。所以我又回到了那个好的 ol' pod。 +1 @swalkner @JoeBlow 为什么会这样? 【参考方案1】:

如官方文档中所述,只需更新您的 Pod 存储库

pod repo update

【讨论】:

【参考方案2】:

如果您从旧版本更新到 FabricCrashlytics

    如果您的 info.plist 文件中包含密钥 Fabric 的任何数据,请确保连同密钥一起删除所有这些信息。 使用简单的"$PODS_ROOT/Fabric/run" 脚本。不要添加任何 API_KEY 和 BUILD_SECRET

这对我有用,希望这会有所帮助。

【讨论】:

【参考方案3】:

如果您之前在项目中使用 Fabric,请确保从您的 pod 中卸载 pod 'Answers', '~> 1.3'。

【讨论】:

【参考方案4】:

对于我的项目,这很有效:

"$PODS_ROOT/Fabric/Fabric.framework/run" YOUR_API_KEY YOUR_BUILD_SECRET

【讨论】:

如何知道 YOUR_API_KEY 和 YOUR_BUILD_SECRET ?【参考方案5】:

macOS Sierra、Swift 3

改变

$PODS_ROOT/Fabric/run

"$PODS_ROOT/Fabric/run"

【讨论】:

【参考方案6】:

Fabric (1.6.7)

你应该改变路径

"$PODS_ROOT/Fabric/Fabric.framework/run" YOUR_API_KEY YOUR_BUILD_SECRET

"$PODS_ROOT/Fabric/run"  YOUR_API_KEY YOUR_BUILD_SECRET

【讨论】:

【参考方案7】:

Fabric 现在支持使用 CocoaPods 安装:http://docs.fabric.io/ios/fabric/cocoapods.html

如果您只是在寻找Crashlytics,您可以使用这两个 pod:

pod 'Fabric'
pod 'Crashlytics'

除了添加以下构建阶段脚本(注意:如果您的存储库的路径包含空格,您将需要引号):

"$PODS_ROOT"/Fabric/run <API Key> <Build Secret>

如果您希望使用 TwitterKit,您需要包括:

pod 'TwitterKit'

【讨论】:

在 2015 年 7 月 15 日的 Crashlytics Cocoapods 大灾难之后来到这里的人们应该支持这个答案以将其推到页面上。这应该是现在公认的答案。 如果您将 crashlytics 构建到本地 pod 中并将本地 pod 包含在最终目标中,这将不起作用。 @dcow 目前有什么方法可以在 pod 中使用 Crashlytics,而不是在您的最终目标中。我现在正在努力完成这项工作。 @AnthonyM github.com/CocoaPods/Specs/pull/13315 修复了 Crashlytics pod 的问题。不过,根似乎是 CocoaPods 中的一个更大的错误。 如果你的仓库路径包含空格,你可能想要"$PODS_ROOT"/Fabric/Fabric.framework/run(注意引号)【参考方案8】:

我不得不使用 CocoaPods 0.39 在 Xcode 7 中使用不同的路径:

$SRCROOT/Pods/Fabric/Fabric.framework/run <key> <secret>

podfile:

pod 'Crashlytics'
pod 'Fabric'

我也刚刚将 Fabric 更新到 3.4.1,路径 ^ 略微更改为 Fabric/run。确保仔细检查$SRCROOT 之后的位,并将其与 Fabric 应用程序推荐的内容进行比较。详情请见the changelog for 3.4.1。

【讨论】:

我在 Xcode 7.1 beta 1 和 CocoaPods 0.39 上,但我仍然遇到问题。您是否能够在 Xcode 7.1 测试版中对此进行测试? 我没有在 7.1 上再次尝试过,但仍然检查构建设置中的路径。【参考方案9】:

试试:

    删除 podfile 中的 Fabric 和 Crashlytics。

    pod 安装

    再次将 Fabric 和 Crashlytics 添加到 podfile

    pod 安装

    像上面的答案一样添加运行脚本。

希望对您有所帮助。

【讨论】:

【参考方案10】:

删除 podfile.lock 和 manifest.lock,然后重新运行 podfile install,然后使用 Fabric 中的“简单”配置应用程序从那里继续。

Fabric.io 网站上有一些非常漂亮的屏幕截图幻灯片演示。我在 Google 上找到了它们 - 看不到从网站的哪个位置可以访问它们。

仅供参考,如果您遇到问题,那不是您 :)。基本上(截至 8 月 3 日),Fabric 板载流程的每一步都可能被破坏。

如果幸运的话,您可能不会遇到任何问题。 如果不是,:( 您可能在每一步都需要解决问题,包括注册服务,这会使您陷入无休止的注册循环,等等。

希望这些都会很快得到解决。

警告:您通过搜索找到的大多数答案都将过时,因为显然 fabric.io 在 7 月 15 日发生了很大变化,但是如果您向下滚动在 stack/o 上找到的任何内容,您可能会找到更新的答案.

【讨论】:

【参考方案11】:

如果您依赖于旧 Podspecs 的特定内容并且还不能更新到官方库,您可以添加

source 'https://github.com/orta/FabricSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'

到您的 Podfile 的顶部,它会在新版本之前查找较旧的 -unofficial- 版本。有关详细信息,请参阅FabricSpecs 存储库。

【讨论】:

【参考方案12】:

我以前遇到过这个问题。 这是我的解决方案。 在运行脚本之前自动添加运行文件的执行模式。

Build Phase -&gt; Run Script 中添加以下行:

chmod +x ./Pods/CrashlyticsFramework/Crashlytics.framework/run

./Pods/CrashlyticsFramework/Crashlytics.framework/run YOUR_API_KEY YOUR_BUILD_SECRET

【讨论】:

【参考方案13】:

我遇到了同样的问题,使用指向您的 Pods 文件夹的 $PODS_ROOT 环境变量;如果路径中有空格,请务必引用它;所以而不是

./Pods/Fabric/Fabric.framework/run YOUR_API_KEY YOUR_BUILD_SECRET

使用

"$PODS_ROOT"/Fabric/Fabric.framework/run YOUR_API_KEY YOUR_BUILD_SECRET

【讨论】:

【参考方案14】:

对我来说同样的问题是通过更改以下行来解决的:

./Pods/Fabric/Fabric.framework/run YOUR_API_KEY YOUR_BUILD_SECRET

到:

../Pods/Fabric/Fabric.framework/run YOUR_API_KEY YOUR_BUILD_SECRET

换句话说,只需在前面加上一个额外的 '.'指定“Pods”目录是构建目录的兄弟而不是子目录。 YMMV。

【讨论】:

【参考方案15】:

在构建阶段执行的脚本路径与使用 Cocoapods 时不同。 https://github.com/bpoplauschi/CrashlyticsFramework 上的 github 页面建议使用 ./Pods/CrashlyticsFramework/Crashlytics.framework/run 但是,我发现我必须使用 ./Pods/Fabric/Fabric.framework/run 进行安装。无论如何,您必须在 Pods 目录中挖掘才能找到您要查找的内容。

【讨论】:

【参考方案16】:

通常我会建议不要违背常规并使用 Fabric 应用程序进行安装。鉴于它们提供的复杂性,它是我见过的最简单的集成工具。

话虽如此,既然您已经死心塌地使用 Cocoapods,那么让事情顺利进行的唯一方法就是以下

    运行 Crashlytics 应用程序安装程序,直到它们为您提供构建阶段脚本。 复制脚本 撤消安装 通过 Cocoapods 安装 将复制的脚本添加到您的构建阶段

【讨论】:

以上是关于通过 CocoaPods 集成 Fabric/Crashlytics的主要内容,如果未能解决你的问题,请参考以下文章

将 GoogleCast SDK 与 Cocoapods 集成

显示使用Cocoapods的Xcode项目的所有本机iOS依赖项/框架

AoE工程实践 —— 记CoreML模型在CocoaPods应用中的集成(上)

记录一个比较坑的问题,关于cocoapods和RNxcconfig

使用Jenkins+Calabash+Cocoapods搭建iOS持续集成环境

在安装Cocoapods遇到的问题,有大神可以帮忙的吗,Xcode7