CocoaPods常见问题和解决办法 – CocoaPods教程

上一章CocoaPods教程请查看:Podfile文件解释和使用
安装CocoaPods

  • 如果你正在安装macOS 10.9.0-10.9.2,那么当RubyGems试图安装json gem时,你可能会遇到一个问题。要修复此问题,请遵循以下说明。
  • 从macOS 10.8升级到10.9之后,安装的CocoaPods gem就不能再工作了,即使重新安装了gem。要解决这个问题,你可能需要先卸载gem,然后重新安装。
$ gem uninstall cocoapods $ gem install cocoapods

  • gem可能无法编译,为了解决这个问题,你可能需要symlink 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/ header中的符号链接是否正确,并且没有覆盖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 compiler”(clang)
    • 你是否正在设置CC、CPP或CXX环境变量,例如在~/.profile中?这可能会干扰Xcode的构建过程,从~/.profile文件中删除环境变量。
  5. 如果Xcode在链接时报错,例如Library not found for -lPods,它不会检测到隐式依赖关系:
    • 转到Product>Edit Scheme编辑方案
    • 点击build构建
    • 添加Pods静态库,并确保它位于列表的顶部
    • clean并重建
    • 如果这不起作用,请验证你试图包含的规范的源代码是否已从GitHub中删除。通过查找< Project Dir>/Pods/< 你想要包含的规范名称>。如果是空的(不应该是空的),验证~/.cocoapods/master/< spec>/< spec>.podspec中是否有正确的git hub url。
    • 如果仍然不能工作,请检查Xcode构建位置设置。转到首选项->位置->派生数据->高级(Preferences -> Locations -> Derived Data -> Advanced),并设置构建位置为“相对于工作区(Relative to Workspace)”。
  6. 如果你尝试提交app到app Store,发现“Product”>“Archive”在“Organizer”中没有任何结果:
    • 在Xcode“构建设置”中,找到“跳过安装(Skip Install)”。在你的应用程序target上将“Release”的值设置为“NO”。重新构建,它应该可以工作。
可以使用静态库来解决“Duplicate Symbol”错误吗?这种情况通常发生在使用包含应用程序公共依赖项的闭源第三方库时。一种蛮力解决方案是从静态库中删除依赖项。
但是,通常情况下,供应商应该在其包含的所有依赖项前面加上前缀,这样你就不需要处理它了。当这种情况发生时,请联系供应商,请他们将其修复,并使用上述方法作为临时解决方案。
在运行pod命令时得到权限错误从CocoaPods 0.32.0开始,我们已经取消了以根用户身份运行pod命令的功能,以防止CocoaPods在以根用户身份运行时进入不一致的状态。
如果你在某个阶段以根用户身份运行CocoaPods,那么在执行某些操作时,你可能会开始获得被拒绝的权限错误。当你遇到权限错误时,你可能需要删除以root身份运行的旧文件,如缓存数据。你可以使用以下命令来完成此任务。
$ sudo rm -fr ~/Library/Caches/CocoaPods/ $ sudo rm -fr ~/.cocoapods/repos/master/

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

我没有找到解决问题的办法!【CocoaPods常见问题和解决办法 – CocoaPods教程】我们有多种支持途径,以下是我们喜欢的顺序。
  • 堆栈溢出,给你自己一些互联网点。这让CocoaPods开发团队没有压力,让我们有时间去做项目,而不是去支持它。使用Stack Overflow的一个好处是其他人可以很容易地找到答案。
  • CocoaPods邮件列表,邮件列表主要用于相关项目的公告和支持。
  • 如果您你问题是关于通过CocoaPods分发库的,请参考spec repo。

    推荐阅读