在公司中我们做iOS开发过程会经常使用一些第三方库,当然你足够牛逼你也可以自己写库,我想既然你在看我这篇博文,估计你离写框架还有段距离! 废话少说,下面直入正题:
首先,CocoaPods是什么?
CocoaPods是用来管理第三方库的,比如我们常用的SDWebImage,AFNetWorking。如果我们不使用pods只能手动拖到项目中,那么问题来了,如果某一天作者更新了库,添加了许多新功能或者解决了一些隐型的BUG,我们怎么办?这时我们只有两种办法,一是不吊它,二是把项目中的库删掉再重新下载更新的版本拖到项目中。。显然第一种做法是等死的,第二种做法恶心。所以此时CocoaPods就发挥了它不可替代的作用。作为iOS开发人员掌握CocoaPods使用是很有必要的。
其次,如何下载和安装CocoaPods?
在安装CocoaPods之前,首先要在本地安装好Ruby环境。假如你在本地已经安装好Ruby环境,那么下载和安装CocoaPods将十分简单,只需要一行命令。在Terminator(也就是终端)中输入以下命令:
sudo gem install cocoapods
此时你会发现等到花都谢了也无法安装,因为你被墙了!此时我们可以用淘宝的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/
这时候,你再次在终端中运行:
sudo gem install cocoapods
等上十几秒钟,CocoaPods就可以在你本地下载并且安装好了,不再需要其他设置了。
接下来该如何使用CocoaPods?
好了,安装好CocoPods之后,接下来就是使用它。所幸,使用CocoPods和安装它一样简单,也是通过一两行命令就可以搞定。
下面利用CocoaPods,在项目中导入AFNetworking类库
$ pod search AFNetworking
此时,我们可以看到一系列关于AFNetworking的信息,说明pods是可以来管理它的。
此时你会想,CocoaPods怎么才能去下载AFNetworking呢?这个问题的答案是,有个文件来控制CocoaPods该下载什么。这个文件就叫做“Podfile”(注意,一定得是这个文件名,而且没有后缀)。你创建一个Podfile文件,然后在里面添加你需要下载的类库,也就是告诉CocoaPods,“某某和某某和某某某,快到碗里来!”。每个项目只需要一个Podfile文件。首次使用pods时我们需要执行一下命令来初始化远程的仓库:
<pre name="code" class="objc">pod setup
如果这里也是很慢的话,先执行一下命令转换repo镜像为国内服务器:
pod repo add master https://gitcafe.com/akuandev/Specs.git
然后执行下
pod setup
如果以后更新第三方库信息(比如又有其他人写了新的框架上传)此时我们执行命令更新:
sudo repo update
好吧,废话少说,我们先创建这个神奇的PodFile。这是我们先创建一个项目,在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,运行:
$ pod Podfile(或者$ pod init也可以生成Podfile文件)
$ vim Podfile
这时我们已经创建了Podfile文件了,我们此时需要在里面输入相关信息,如图:
$ pod install
注意此时我们可能被卡死。。。
解决办法为:(没有卡住请忽略)
<pre name="code" class="objc">pod install --verbose --no-repo-update
此时我们还有可能遇到另外一个问题,如果我们电脑上安装了两个版本的xcode,此时会出现下面的错误:
此时我们确认一个xcode版本:
sudo xcode-select -switch /Applications/Xcode\ 7.2.app
然后再输入指令:
pod install --verbose --no-repo-update
过一会我们的类库就下载好了,此处不在截图。以后某个类库更新,我们只需执行以下指令即可:
pod update
如果此时卡住不动,执行下面(原因在于当执行以上命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少)
pod update --verbose --no-repo-update
如果我们需要在添加其它库只需打开Podfile添加即可。当我们添加类库出现下面问题时(原因:你本地的repo库太长时间没有更新了)
我们可以执行命令:
pod repo update
pod update --verbose --no-repo-update
关于pods的介绍先到此为止,此时我们在项目中会发现多了几个文件夹,例如以.xcworkspace结尾的,我们以后打开工程就是通过它了,而不是像以前那样点击.codeproj后缀文件打开工程。