故障排除

<安装 CocoaPods

  • 如果你在 macOS 10.9.0-10.9.2 上安装,当 RubyGems 尝试安装 json gem 时,你可能会遇到问题。要解决此问题,请按照 这些 说明进行操作。
  • 从 macOS 10.8 升级到 10.9 后,即使重新安装 gem,已安装的 CocoaPods gem 也不再起作用。要解决此问题,你可能需要先卸载 gem,然后再重新安装。

     $ gem uninstall cocoapods
     $ gem install cocoapods
    
  • gem 可能无法编译,要解决此问题,你可能需要 链接 GCC

  • 如果你使用 Xcode 的预发布版本,你可能需要更新命令行工具。

  • CocoaPods 与 MacRuby 不兼容。

  • 如果你收到错误“ERROR: While executing gem ... (Errno::EPERM); Operation not permitted - /usr/bin/fuzzy_match”,请尝试:$ sudo gem install -n /usr/local/bin cocoapods

<使用 CocoaPods 项目

  1. 使用 Xcode 工作区 <Project>.xcworkspace,而不是 Xcode 项目。

  2. 如果某些内容似乎不起作用,首先确保你没有完全覆盖项目构建设置中 Pods.xcconfig 文件设置的任何选项。要向项目构建设置中的选项添加值,请在值列表前加上 $(inherited)

  3. 如果 Xcode 找不到依赖项的标头

    • 检查 pod 标头文件是否在 Pods/Headers 中正确链接,并且你没有覆盖 HEADER_SEARCH_PATHS(请参见 #1)。
    • 确保你的项目正在使用 Pods.xcconfig。要检查此内容,请选择你的项目文件,然后在第二个窗格中再次选择它,并在第三个窗格中打开 Info 部分。在配置下,你应为每个需要已安装 pod 的配置选择 Pods.xcconfig
    • 如果 Xcode 仍然找不到它们,作为最后的手段,你可以添加你的导入,例如 #import "Pods/SSZipArchive.h"
  4. 如果你收到有关无法识别的 C 编译器命令行选项的错误,例如 cc1obj: error: unrecognised command line option "-Wno-sign-conversion"

    • 确保项目构建设置已 配置 为使用“Apple LLVM 编译器”(clang)
    • 您是否在设置 CCCPPCXX 环境变量,例如在您的 ~/.profile 中?这可能会干扰 Xcode 构建过程。从您的 ~/.profile 中移除环境变量。
  5. 如果 Xcode 在链接时发出抱怨,例如 Library not found for -lPods,它未检测到隐式依赖项

    • 转到产品 > 编辑方案
    • 点击构建
    • 添加 Pods 静态库,并确保它位于列表顶部
    • 再次清理并构建
    • 如果这不起作用,请验证您尝试包含的规范的源已从 GitHub 中提取。通过查看 <Project Dir>/Pods/<您尝试包含的规范的名称> 来执行此操作。如果它为空(它不应为空),请验证 ~/.cocoapods/master/<spec>/<spec>.podspec 中具有正确的 git hub url。
    • 如果仍然不起作用,请检查您的 Xcode 构建位置设置。转到首选项 -> 位置 -> 派生数据 -> 高级,并将构建位置设置为“相对于工作区”。

Xcode build location settings
  • 如果您尝试将应用提交到 App Store,并发现“产品”>“存档”在“组织者”中没有任何内容
    • 在 Xcode“构建设置”中,找到“跳过安装”。在您的应用程序目标上将“发布”的值设置为“否”。再次构建,它应该可以正常工作。

不同的 Xcode 版本可能存在各种问题。寻求帮助并告诉我们您正在使用哪个版本。

<我可以用静态库解决“重复符号”错误吗?

这通常发生在您使用包含应用程序公共依赖项的闭源第三方库时。一种蛮力解决方法是从静态库中移除依赖项,如 此处 所述

然而,一般来说,供应商应该真正为其包含的任何依赖项添加前缀,这样您就不必处理它。当这种情况发生时,请联系供应商并要求他们在其方面修复它,并使用上述方法作为临时解决方法。

<在运行 pod 命令时出现权限错误

从 CocoaPods 0.32.0 开始,我们移除了以 root 身份运行 pod 命令的功能,以防止在以 root 身份混合和匹配运行时,CocoaPods 进入不一致的状态。

如果你在某个阶段以 root 身份运行了 CocoaPods,那么在执行某些操作时,你可能会开始收到权限被拒绝的错误。当遇到权限错误时,你可能需要删除以 root 身份运行的旧文件,例如缓存数据。你可以使用以下命令执行此操作。

$ sudo rm -fr ~/Library/Caches/CocoaPods/
$ sudo rm -fr ~/.cocoapods/repos/master/

除了这些全局文件之外,在任何有 Podfile 的地方也可能有一个 Pods 目录。如果你仍然收到权限错误,你应该也删除此目录,然后运行 pod install

$ sudo rm -fr Pods/

<我想要的修复程序在 master / 某个分支中,但我现在被阻止了

有一个 使用 CocoaPods 版本来尝试新功能的指南,这些功能正在讨论或处于实施阶段。

<我没有找到解决我问题的办法!

我们有多种支持途径,按我们喜欢的顺序排列如下。

  • Stack Overflow,获得一些互联网积分。这可以减轻 CocoaPods 开发团队的压力,并让我们有时间致力于该项目,而不是支持。使用 Stack Overflow 的一个好处是,答案很容易被其他人访问。

  • CocoaPods 邮件列表,邮件列表主要用于宣布相关项目和提供支持。

  • 如果你的问题与通过 CocoaPods 分发的库(待分发)有关,请参阅 规范存储库

<我认为这是 CocoaPods 的一个错误

在这种情况下,我们希望在 GitHub 问题跟踪器中解决它,我们使用它来跟踪我们必须完成的开发工作。

  • 在提交新问题之前搜索问题。如果你有关于该问题的新信息,请添加到现有问题中。

  • 仅提交有关 CocoaPods 工具本身的问题。这包括 CocoaPodsCocoaPods/CoreXcodeproj

  • 问题要简短但内容丰富。确保包含解决问题所需的所有背景信息。不要做得太过。好的问题让我们能够专注于解决问题,而不是讨论问题。