CocoaPods是什么?
当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,SDWebImage,AFNetWorking等等。但是可能某两个类库都用到其他相同的类库,像ShareSDK和WechatOpenSDK都包含的libWeChatSDK.a,这也许是比较特殊的情况。那么手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。所以CocoaPods自动管库类文件就显得尤为重要了。
CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。
如何下载和安装CocoaPods?
在安装CocoaPods之前,首先要在本地安装好Ruby环境。至于如何在Mac中安装好Ruby环境,请google一下,本文不再涉及。
假如你在本地已经安装好Ruby环境,那么下载和安装CocoaPods将十分简单,只需要一行命令。在Terminator(也就是终端)中输入以下命令:
sudo gem install cocoapods
但是,且慢。如果你在天朝,在终端中敲入这个命令之后,会发现半天没有任何反应。原因无他,因为那堵墙阻挡了cocoapods.org。我们可以用淘宝的Ruby镜像来访问cocoapods。按照下面的顺序在终端中敲入依次敲入命令:
$ gem sources --remove https://rubygems.org/
//等有反应之后再敲入以下命令
$ gem sources -a http://ruby.taobao.org/
为了验证你的Ruby镜像是并且仅是taobao,可以用以下命令查看:
$ gem sources -l
只有在终端中出现下面文字才表明你上面的命令是成功的:
*** CURRENT SOURCES ***
http://ruby.taobao.org/
查看当前源
gemsource-l
移除淘宝源
gem sources --remove https://ruby.taobao.org/
更换新源
gem source-a https://gems.ruby-china.org
如果刚开始配置那就使用下面的命令行吧
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
完成上面步骤后执行安装cocoapods命令
输入:sudo gem install cocoapods
(1)如果出现错误, 则需要根据提示安装相应版本的ruby, 详细步骤如下“使用RVM对Ruby进行升级”
(2)更换镜像 淘宝镜像一直报ssl证书缺少,后来我把它换了,换之后挺好的,不会报这个错误了。
5.查看当前cocoaPods的版本号, 验证是否安装成功
输入:pod --version
6.在终端输入pod search fmdb, 验证是否有第三方的搜索结果,如果出现搜索结果则安装成功。
b.使用RVM对Ruby进行升级
1.先查看现在的Ruby版本号
输入命令:ruby -v
2.安装 RVM
RVM:Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset)
a.先输入:
curl -L get.rvm.io | bash -s stable
b.然后输入:
source ~/.bashrc
source ~/.bash_profile
c.测试是否安装正常
rvm -v
3.用RVM升级Ruby
a.查看当前ruby版本
输入:ruby -v
b.列出已知的ruby版本
输入:rvm list known
c.安装所需要版本的Ruby, 例如
输入:rvm install 2.5.2
4.安装完成之后,查看是否安装成功
输入:ruby -v
等上十几秒钟,CocoaPods就可以在你本地下载并且安装好了,不再需要其他设置。
敲入以上命令时,楼主终端上是这个样子的(由于太长,仅截取前面一部分):
使用cocoaPods安装第三方的步骤
1.进入工程文件夹: 在终端输入cd, 然后把文件夹放进去
2.初始化pod文件: pod init
3.打开podfile文件:删代码, 只保留 platform :ios, '8.0'
4.输入命令搜索想要的第三方:pod search mbprogress
5.粘贴 pod ‘名字’, ‘版本’, 进入podfile文件
6.在终端输入: pod install
例子:
platform :ios, '8.0'
pod 'AFNetworking', '~> 3.0.3'
注意:如果安装好一个第三方后想再安装第二个第三方只需执行 1, 4, 5, 6步骤
注意:如果安装第三方时出现The dependency `AFNetworking (~> 3.1.0)` is not used in any concrete target.错误
解决方法:
(1) 检查CocoaPods的版本
pod --version
(2) 升级或安装最新版本(目前版本1.0.1)
注意:如果cocoapods已经是1.0.1版本,则跳过该步骤直接进入第三个步骤。
升级命令:sudo gem update -n /usr/local/bin --system
安装命令:sudo gem install -n /usr/local/bin cocoapods
(3)修改Podfile的内容
修改前的Podfile文件的内容:
platform:ios,'7.0'
pod 'MJRefresh', '~> 3.1.0'
pod 'SDWebImage', '~> 3.7.6'
pod 'SVProgressHUD', '~> 2.0.3'
pod 'AFNetworking', '~> 3.1.0'
修改后的Podfile文件的内容:
platform :ios, '8.0'
use_frameworks!
target 'TestThirdParty' do
pod 'AFNetworking', '~> 2.6'
//可以连续pod多个第三方
// pod 'B','版本'...
end
这时候,你再次在终端中运行:
$ sudo gem install cocoapods
这里的意思大概是Podfile文件过期,类库有升级,但是Podfile没有更改。$ pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是 $ pod update会更新所有的类库,获取最新版本的类库。而且你会发现,如果用了 $ pod update,再用 $ pod install 就成功了。
这就是耐心点检查ruby和pods库那个缺少加那个 一遍一遍尝试,最后让你开始怀疑人生的时候,它莫名其妙就好了。