通过CocoaPods集成Fabric/Crashlytics

54

我尝试通过CocoaPods集成Fabric/Crashlytics,我的Podfile看起来像这样:

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

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

Translated text:

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

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

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


为什么不使用Fabric应用程序自动安装SDK并生成您的应用程序ID等呢? - Daniel Galasko
12
因为我喜欢通过Cocoapods更新外部框架,并且希望将所有东西放在一个地方。 - swalkner
使用Pod方法与使用应用程序安装的其他优缺点是什么? - Bradley Thomas
我在通过Fabric应用程序更新后遇到了太多的构建错误。因此,我回到了老式的pod。+1 @swalkner - Benjamin
@JoeBlow 为什么? - swalkner
https://fabric.io/kits/ios/crashlytics/install - TMD
16个回答

167

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

如果您只需要 Crashlytics,则可以使用以下两个 pods:

pod 'Fabric'
pod 'Crashlytics'

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

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

运行脚本构建阶段

如果您想使用TwitterKit,您需要包含:

pod 'TwitterKit'

9
如果在2015年7月15日Crashlytics Cocoapods大灾难后才来到这里的人,请点赞此答案以将其推至页面顶部。现在应该接受这个答案。 - Mark Edington
1
如果您将Crashlytics构建到本地pod中并将该本地pod包含在最终目标中,则此方法无法正常工作。 - dcow
@dcow 目前是否有一种方法可以在 pod 中使用 Crashlytics,而不是在最终目标中使用。 我正在尝试让它正常工作。 - AnthonyMDev
1
@AnthonyM在https://github.com/CocoaPods/Specs/pull/13315 中修复了Crashlytics库的问题。然而,根本原因似乎是CocoaPods中的一个更大的错误。 - dcow
6
如果您的仓库路径中包含空格,您可能需要执行 "${PODS_ROOT}"/Fabric/Fabric.framework/run(注意引号)。 - nevyn
显示剩余5条评论

10

我遇到了同样的问题,通过将以下行更改为解决了此问题:

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

至:

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

换句话说,只需在“Pods”目录前加一个额外的'.',以表示它是构建目录的同级目录而不是子目录。结果因人而异。


9
我曾经遇到过同样的问题,使用 $PODS_ROOT 环境变量指向你的 Pods 文件夹;如果你的路径中有空格,请确保用引号将其括起来。因此,不要使用以下命令:

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

而是使用以下命令:

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


8

尝试以下步骤:

  1. 在podfile中移除Fabric和Crashlytics。

  2. 运行pod install。

  3. 再次将Fabric和Crashlytics添加到podfile中。

  4. 再次运行pod install。

  5. 像上面的答案一样添加Run脚本。

希望它有所帮助。


7

macOS Sierra,Swift 3

变更

${PODS_ROOT}/Fabric/run

为了

"${PODS_ROOT}/Fabric/run"

5

在使用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应用程序推荐的内容进行比较。更多详细信息请参见3.4.1版本更新日志

我正在使用Xcode 7.1 beta 1和CocoaPods 0.39,但仍然遇到了这个问题。你能在Xcode 7.1 beta中测试吗? - Isuru
我还没有在7.1上再次尝试,但仍需检查构建设置中的路径。 - brandonscript

5

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

3
在使用Cocoapods时,执行构建阶段的脚本路径与常规不同。在https://github.com/bpoplauschi/CrashlyticsFramework的Github页面上建议使用./Pods/CrashlyticsFramework/Crashlytics.framework/run,然而,我发现我必须使用./Pods/Fabric/Fabric.framework/run进行安装。无论如何,您都需要深入了解Pods目录以找到所需内容。

2
如果你要从旧版本更新到FabricCrashlytics,请注意以下几点:
  1. 如果你的info.plist文件中有Fabric键对应的数据,请确保删除所有这些信息以及该键。
  2. 使用简单的"${PODS_ROOT}/Fabric/run"脚本。不要添加任何API_KEY和BUILD_SECRET。
以上内容对我有效,希望对你也有所帮助。

1
如果你依赖于旧的Podspecs中的特定内容,而目前还不能更新到官方库,你可以添加。
source 'https://github.com/orta/FabricSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'

将其添加到您的Podfile文件顶部,它会查找新版本之前的旧版本(非官方版本)。有关详细信息,请参阅FabricSpecs存储库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接