前言:
CocoaPods是一个负责管理iOS项目中第三方开源库的工具,使用起来非常简单方便,最近在使用时发现,之前使用的cocoapods版本过低,已经不能正常使用,比如当你要添加某个第三方库,使用命令
$ pod install
时会报这样的错误:
Updating local specs repositories
[!] The `master` repo requires CocoaPods 1.0.0 -(currently using 0.39.0)
Update CocoaPods, or checkout the appropriate tag in the repo.
意思就是提示你目前版本过低,需要升级cocoapods。
那么升级cocoapods具体应该怎么做呢?经常今天上午的尝试,最终升级成功,本文将具体介绍一下cocoapods的升级过程。
一、升级ruby环境到2.2.2以上
检查当前ruby环境的版本,(mac系统已经默认安装好Ruby环境,之前安装过cocoapods肯定也会有ruby环境的存在)使用命令
$ ruby -v
输入类似如下的版本信息:
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
此时发现版本明显低于最新的版本2.3,如果版本太低就会导致后续cocoapods升级失败,那只能先升级ruby环境了。但是ruby环境怎么升级呢?请往下看:
原来ruby的升级是通过RVM(ruby version manage)来操作的,RVM包含了Ruby的版本管理和Gem库管理(gemset)。
你可以通过RVM命令来判断RVM是否已经安装
rvm list
输出
-bash: rvm: command not found
说明此时我的Mac上面并没有安装RVM,下面就是RVM的安装:
输入如下命令进行安装
$ curl -L get.rvm.io | bash -s stable
稍等一下,会一直输出很多内容,之后就安装成功了,然后可以通过命令验证
$ source ~/.bashrc
$ source ~/.bash_profile
测试RVM是否可以正常使用以及查看RVM的当前安装版本,使用命令
$ rvm -v
输出
使用RVM升级ruby
列出已知的ruby版本
$ rvm list known
稍等一下,会出现很多平台不同的ruby的版本,我安装的2.2.4版本
$ rvm install 2.2.4
需要等待很长时间并打印很多日志,然后查看当前的ruby版本
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15]
对比文章开始的时候的ruby版本之后发现,ruby版本已经升级成功,并且升级到了我需要的2.2.4版本
注:
在整个过程的实施中需要提前安装Xcode,要不然中途也会提示你安装Xcode,否则将会报错。
2.切换源
由于目前 ruby.taobao.org 已停止更新及维护,所以如果想继续正常使用cocopods,要更新到 ruby China源,否则会出现一些莫名的错误,下面介绍源的更换
升级gem到最新版本
$ sudo gem update --system
稍等一会并且会输出很多和版本相关的内容,然后移除原来的淘宝镜像
$ gem sources --remove https://rubygems.org/
$ gem sources --remove https://ruby.taobao.org/
添加新的镜像
gem sources -a https://gems.ruby-china.org/
验证你的Ruby镜像是并且仅是ruby-china
$ gem sources -l
输出如下内容表示源切换成功
*** CURRENT SOURCES ***
https://gems.ruby-china.org/
3.安装更新cocoapods
$ sudo gem install cocoapods
稍等一会即可成功,查看pod版本
$ pod --version
此时版本为1.1.1表示升级成功,可以使用pod search AFNetworking进行测试pod是否正常。
注:
1.当上述没有问题时如果你去给项目添加一个新的第三方库会发现报如下错误:
Analyzing dependencies
[!] The dependency `ReactiveCocoa (~> 2.5)` is not used in any concrete target.
原因是:podfile升级到最新版本,安装跟更新第三方库报,pod里的内容必须明确指出所用第三方库的target;
解决办法:可以修改Podfile文件的配置文件,让它兼容不指定固定版本;且又不报错;
即在Podfile文件中添加
target ‘project’ do
第三方库
end
2.当老项目中使用过cocoapods时,如果你在Podfile中多次使用platform :ios, '7.0'并没有什么问题,但是此时你升级了cocoapods,当你对老项目使用pod install或者pod update命令时会报错:
解决办法:
1.删除Podfile文件中多余的platform :ios, '7.0',只留一个;
2.添加target
到这里cocoapods已经更新到最新版本了,可以愉快的使用了。