博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mac 10.11系统下cocoaPods安装注意事项
阅读量:5278 次
发布时间:2019-06-14

本文共 2428 字,大约阅读时间需要 8 分钟。

本文读者需具备的知识: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/ruby-2.3.1@global/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/ruby-2.3.1@global/gems/cocoapods-0.39.0/lib/cocoapods/resolver/lazy_specification.rb:14:in `method_missing'

/Users/xxx/.rvm/gems/ruby-2.3.1@global/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:64:in `flatten'

/Users/xxx/.rvm/gems/ruby-2.3.1@global/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】不要在一个点上死磕,自己经过必要的尝试还是找不到有效的解决办法时,就要及时向别人请教,不要脸皮太薄,导致无谓地浪费了过多时间。

转载于:https://www.cnblogs.com/zxy500/p/5824303.html

你可能感兴趣的文章
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>