这两年因为升级系统、更换电脑,帮助同事等前前后后安了5次CocoaPods,整理了一下CocoaPods的安装流程及过程中遇到的一些坑,算是比较全面,覆盖了所有可能碰到的问题。(taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务.)
CocoaPods是什么?
CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。
CocoaPods 背后的理念主要体现在两个方面。
首先,在工程中引入第三方代码会涉及到许多内容。对开发者来说,工程文件的配置会让人很沮丧。在配置 build phases 和 linker flags 过程中,会引起许多人为因素的错误。CocoaPods 简化了这一切,它能够自动配置编译选项。
通过 CocoaPods,可以很方便的查找到新的第三方库。
CocoaPods是用 Ruby 写的,想要使用它首先要有Ruby环境.
RubyGems简称gems,是一个用于对Ruby组件进行打包的Ruby打包系统
一. 流程
第一步:安装rvm
不管需不需要升级ruby,rvm可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。如果已经安装过跳到第2步(rvm -v 查看是否安装)
|
|
查看rvm版本
|
|
如果能显示版本好则安装成功了。
更新RVM
|
|
第二步:安装ruby
CocoaPods目前安装需要Ruby的版本大于2.2.2,不然会报错:Error installing pods: activesupport requires Ruby version >= 2.2.2。目前Mac系统默认自带是2.0,所以需要升级。
查看已安装的ruby:
|
|
如果已安装版本大于2.2.2,可以直接到第3步。(如果强迫症就想安装最新的可以继续往下)
查看可下载的ruby版本
|
|
输出结果为:
|
|
选择版本安装
|
|
查看已安装的版本
|
|
输出结果如下:
|
|
查看当前使用的版本
|
|
这里一定要设置为默认版本
|
|
删除安装过的版本
|
|
如果提示权限不足,加上sudo
|
|
第三步:升级RubyGems,更换源
我们需要来修改更换源(由于国内被墙)所以要把源切换至 ruby-china 在终端执行以下命令
网上文章大都是这面这种:
|
|
这里是个大坑:会报错 _connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://ruby.taobao.org/specs.4.8.gz)
这是因为taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务,正确的操作是:
更新gem到最新版本
|
|
如果是最新,则输出:
|
|
如果没有权限报错,在命令前加上sudo
更换源(最新使用的是:https://gems.ruby-china.org/)
等有反应之后再敲入以下命令
|
|
为了验证你的Ruby镜像是并且仅是ruby-china,可以用以下命令查看:
|
|
只有在终端中出现下面文字才表明你上面的命令是成功的:
|
|
确保只有 gems.ruby-china.org
第四步:安装CocoaPods
|
|
看看这样就成功了
|
|
安装了多个xcode进行选择
|
|
安装本地库
|
|
完毕之后这个文件夹大概有 1.5G,需要花费比较多时间,请耐心等待。
到这里你已经成功安装了CocoaPods
执行上面的命令过后,会出现卡主不动,这个是时候是在下载,通常会等很久。这是后可以通过cmmand+n新创一个终端窗口,然后cd ~/.cocoapods/到该文件下,执行du -sh *查看大小:
|
|
查看版本
|
|
升级CocoaPods
|
|
以下是安装pod本地库时可能会有的坑
如果安装失败 ~/.cocoapods 里面是空的,就需要重新setup
命令如下:
|
|
终极办法:把你已经装好了cocoaPods同时~/.cocoapods目录下的repo目录拷贝下来,放进自己的目录里。再 pod setup
为了确定CocoaPods是否可以使用,可以用CocoaPods的搜索功能验证一下。在终端中输入:
|
|
过一段时间之后(可能会比较久),你可能会在终端中看到一些红色的错误信息,Setting up CocoaPods master repo如下:
|
|
这说明CocoaPods还不能正常使用,需要更新pod,下载它的一些依赖包;在终端中输入:
|
|
如果在终端中看到以下红色的错误信息
这说明某些环境原因导致pod更新不了,可能原因有,1)gem版本太低;2)github无法链接;3).cocoapods目录下的配置信息错误。我们可以一个一个来排除,
首先更新gem到最新版本,在终端中输入:
|
|
然后检查是否可以ping通github,在终端中输入:
|
|
然后查看pob repo list:
|
|
cd 到该目录里,用du -sh 命令来查看文件大小
`cd ~/.cocoapods 进入cocoapods文件后在终端输入:du -sh `
结果显示0 repos,说明没有安装成功;
删除.cocoapods目录,重新下载pod更新:
|
|
重新执行pod setup,过一段时间后提示setup completed,在终端中输入 pod list,展示出安装列表;
敲入以上命令时,小编终端上是这个样子的(由于太长,仅截取前面一部分):
如果还是报错unable to access 'https://github.com/CocoaPods/Specs.git/': SSLRead() return error -9806
遇到这种问题的话,可以手动去克隆一份到repos目录下面。
|
|
可怜的你发现,速度真是慢啊,你等不了,还有一个解决方法
|
|
可怜的你还是发现,下载速度也很慢啊,这里还有一个解决方案
|
|
好了,现在我们重新检测一下是否能正常运行。
如果又报错:[!] Unable to find a pod with name, author, summary, or descriptionmatching 'AFNetworking'
重置下json文件
|
|
终于下载并且安装好了,接下来看下如何使用吧。。
第五步: CocoaPods使用
关于vim命令
比如打开_config.yml文件:
vim _config.yml
进入之后按
i
进入编辑模式退出: 先按ESC键,然后敲:,这是才可以敲命令,比如强行退出可以敲 q! ,如果需要保存退出就敲 x 或者 wq .
vim命令合集: http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html
我们先创建这个神奇的PodFile。在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,运行:
|
|
然后在Podfile文件中输入以下文字:
需要注意的是podfile里面输入的格式变了。
|
|
然后保存退出。vim环境下,保存退出命令是:
|
|
这时候,你会发现你的项目目录中,出现一个名字为Podfile的文件,而且文件内容就是你刚刚输入的内容。注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。
这时候,你就可以利用CocoPods下载AFNetworking类库了。还是在终端中的当前项目目录下,运行以下命令:
|
|
使用下面的命令会更快
|
|
注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。否则无法关联pod下来的类库。
二. 遇到的一些坑
Setting up CocoaPods master repo 卡着不动
1、那是因为 淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/)
需要的命令行:
|
|
2、当pod setup 进入Setting up CocoaPods master repo 等待的时候表示正在下载了,此时你可通过新开一个终端窗口,输入”cd ~/.cocoapods/“命令行跳到cocoapods文件夹内,执行”du -sh *”查看正在下载的文件夹的大小
3、当出现如下
这个错误应该是说这个节点有问题。试试把cocoapods的节点删除,重新添加一个节点,或许就行,说干就干:
原因: Cocoapods的分支不支持当前最新的Xcode版本
解决办法: 删除master分支 重新建立新的分支
|
|
Cocoapods的安装报错 - (ERROR: Error installing cocoapods: activesupport requires Ruby version >= 2.2)
1.移除现有 Ruby 默认源
|
|
2.使用新的源 淘宝镜像
|
|
3.验证新源是否替换成功
|
|
成功后提示:
|
|
4.开始安装cocoapods
|
|
这时候提示:
|
|
这个地方很坑,之前安装cocoapods一直是没有这个问题的,这里提示Ruby版本要大于或等于2.2.2
于是查看已安装的ruby版本
|
|
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
果然这里就要升级ruby版本啦
列出ruby可安装的版本信息:
|
|
如果提示command not found,说明没安装RVM;否则跳过
安装rvm baby 版本管理器
|
|
//__等安装完成 出现下面这行提示以下___
|
|
执行
|
|
测试 RVM baby 版本管理器 是否安装正常
|
|
//__提示以下___
|
|
用RVM升级Ruby 查看当前已安装ruby版本
|
|
列出ruby可安装的版本信息
这里我们安装2.2.2:
终端运行结果:(如果直接成功请绕过homebrew的卸载安装)
回车:
这里执行:
|
|
卸载home-brew
|
|
再执行:
|
|
按回车:
|
|
这里需要输入电脑密码:
|
|
这样ruby2.2.2就安装好了
现在就可以安装cocoapods啦 (上跳流程第四步):
安装ruby遇到” Installing Homebrew - Brew Command Not Found”命令找不到解决方案:
Check XCode is installed or not.
|
|
完成后 执行
//–––––打印输出–––––––
CocoaPods报错:The dependency AFNetworking
is not used in any concrete target
在创建Podfile的时候,用这种格式使用
|
|
里面的 MyApp 记得替换为自己攻城里面的target。这样就基本OK了,执行pod install / pod update 就都可以了。(use_frameworks! 这个是个别需要的,这里修改一下,可以把我上面的代码中的这一行【删除】)
下面是另外一种写法:
|
|
运行 sudo gem update –system 终端提示Updating rubygems-update ERROR: While executing gem … (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems
Mac OS X 10.11后不能使用sudo gem update –system了
需要替换成:sudo gem update -n /usr/local/bin —system
|
|
终端提示貌似没有可以更新的内容
|
|
本文参考:
海旋意境的博客<
>
fairytale_1的博客<<关于安装cocoapods遇到的一些坑(ERROR: Error installing cocoapods: activesupport requires Ruby version >= 2.2)>>
公羽寒的博客<=2.2.2>>
CrazySteven的博客<>
史金亮的博客<>
果啤的博客<<我第一次成功安装CocoaPods的过程>>
WenBo丨星空灬<>
timeToShow的博客<>