通过 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】:如果您从旧版本更新到 Fabric
和 Crashlytics
:
-
如果您的
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 -> 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