OS X 10.11系统下cocoaPods安装注意事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OS X 10.11系统下cocoaPods安装注意事项相关的知识,希望对你有一定的参考价值。

本文读者需具备的知识:cocoaPods相关概念及常用命令。

今天初次使用cocoaPods(下面我就称其为可可豆好了),为其在OS X 10.11系统下的安装折腾了半天,衰x10^n。。。

先反省一下关键点:[1]版本兼容性;[2]解决问题的思路!!!

系统更新(因为代码中使用了XCode 7的新特性,而XCode需要10.11系统)后,一上来:

sudo gem install cocoapods   //不要sudo应该也可以

然后,提示需要ruby2.2.2以上的ruby版本……(而在10.10系统下没这个提示,why?)

然后按照http://blog.csdn.net/lissdy/article/details/9191351的做法,更新了ruby。

先列出可用版本(命令略,下同),又在ruby官网看到,当前最新稳定版是2.3.1,稳定版,听起来就让人放心,于是更新到2.3.1。

然而,最新的稳定版就好吗?事实再次证明这一真理:适合的才是最好的!!而我想当然地选择最新稳定版,就是给自己设了第一个坑。。。

ruby更新完成之后,再安装可可豆,安装成功,会看到安装的是1.0.1版本,仿佛看到了胜利的曙光……

然后cd到项目路径,并执行:

pod install   //可加上--no-repo-update参数,表示不更新可可豆的本地repo,

……竟然找不到pod命令?

可可豆版本不对?卸载之,再重新安装0.39.0的版本(公司有前辈用这个版本,总错不了)

然后……还是不行!于是这样折腾了好几个来回。

发现,当可可豆版本是1.0.1的时候,pod install命令会发生错误:

The dependency `SDWebImage (= 3.7.4)` is not used in any concrete target.

……

刚开始也没管这个错误,就以为可可豆只能选0.39.0的版本了。后来搜索知道,这是因为新版的可可豆Podfile格式发生了变化,需要每个第三方库指定target。那我还真是只能选0.39.0的版本了,合作的项目总不能随便改配置文件吧……

使用0.39.0的版本,照错依旧。再去搜索,看到一个安装ruby的时候有一个 --default 参数,起初还以为是按照默认设置安装,后来才注意到,这表示将安装的ruby版本设置为默认版本。

对于已安装的ruby:

rvm use 2.3.1 --default

然后,pod命令起作用了!!

原来pod的运行跟ruby版本息息相关。可惜我当时还没意识到这一点。。。

接着发现,pod install命令虽然能被系统识别,发生了莫名其妙的错误:

先是警告:

Unable to load a specification for the plugin `/Users/xxx/.rvm/gems/[email protected]/gems/cocoapods-deintegrate-1.0.0`

看到ruby-2.3.1这个字眼,就以为跟ruby版本很大关系,实际上是ruby版本的问题,但问题不在这个警告,其实它只是个警告,还是黄色,而不是红色,表示警告不是很严重……我却把这个警告当成了问题的重点,这是跳进的第二个坑。

然后再搜,找着帖子试了试,还是不行。。。其实,根本问题是在警告下面的一个error:

### Error

```

NoMethodError - undefined method `to_ary‘ for #<Pod::Specification name="AFNetworking">

当初没注意这个error。。。也许因为这个error是黑色字体不显眼?我只能自嘲。。。

反而更注意下面很多行发现不了什么的log:

/Users/xxx/.rvm/gems/[email protected]/gems/cocoapods-0.39.0/lib/cocoapods/resolver/lazy_specification.rb:14:in `method_missing‘

/Users/xxx/.rvm/gems/[email protected]/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:64:in `flatten‘

/Users/xxx/.rvm/gems/[email protected]/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:64:in `block in resolve‘

.......

然后,请教公司前辈,才正确定位错误,就是上面的error

参考https://github.com/CocoaPods/CocoaPods/issues/4345,得到思路:

ruby2.3.1下使用cocoaPods有问题,需要先卸载可可豆,再更换ruby版本为2.2.x(当然我这里最低就是2.2.2),然后重新安装可可豆

这就是所有问题的关键所在!而我就在真相入口周围一圈一圈地绕,就是避开了真相的大门!!我为什么没选ruby 2.2.x??!!我为什么没选ruby 2.2.x??!!我为什么没选ruby 2.2.x??!!

教训:【1】遇到问题不要想当然,某一步有过个选择的时候若不确定,可以使用“穷举法”,每个选择都去试一下,里面就有一个是对的。【2】分析错误时,不要又想当然,只抓住片面,导致思路跑偏。要把错误信息全局、仔细地看清楚,抓住错误根本所在。【3】不要在一个点上死磕,自己经过必要的尝试还是找不到有效的解决办法时,就要及时向别人请教,不要脸皮太薄,导致无谓地浪费了过多时间。

以上是关于OS X 10.11系统下cocoaPods安装注意事项的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 10.11安装cocoapods

Mac OS X 10.11安装cocoapods

OS X10.12上安装cocoapods

虚拟机 VMware Workstation12 安装OS X 系统

Windows下虚拟机安装Mac OS X ----- VM12安装Mac OS X 10.11

Mac OS X El Capitan10.11 系统安装教程