使用CocoaPods管理第三方类库

CocoaPods简介

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods。

CocoaPods项目的源码在Github上管理。该项目开始于2011年8月12日,经过多年发展,现在已经成为iOS开发事实上的依赖管理标准工具。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。

CocoaPods的安装和使用介绍

安装

安装方式异常简单, Mac下都自带ruby,使用ruby的gem命令即可下载安装:

$sudo gem install cocoapods

$pod setup

但是在Mac OS X EL Capitan(10.11)中就会出现Operation not permitted - /usr/bin/pod的错误,当我遇到这个错误的时候我整个人是拒绝的,可是遇到问题还是得解决嘛。后来发现了两个解决方案。

方案一如果你的gem太老,可能也会有问题,可以尝试用如下命令升级gem:

$ mkdir -p $HOME/Software/ruby

$ export GEM_HOME=$HOME/Software/ruby

$ gem install cocoapods

[...]

1 gem installed cocoapods

$ export PATH=$PATH:$HOME/Sofware/ruby/bin

方案一中主要是将GEM的安装路径进行修改,将GEM的默认安装路径修改成了$HOME/Software/ruby这个目录,然后再进行安装,最后将安装路径添加到PATH下,这样可以不用带完整的路径进行运行命令。

方案二

$ gem install cocoapods -n ~/Software/ruby

方案二中使用了gem的自带参数-n—–即指明安装的路径,如果要使用这种的话,也需要将该路径加入PATH下才可以不用带完整的路径进行运行命令。

个人建议是使用第一种,将GEM的安装路径进行修改。这样不需要每次都用-n命令进行指定路径。

sudo gem update --system

另外,ruby的软件源rubygems.org因为使用的亚马逊的云服务,所以被墙了,需要更新一下ruby的源,如下代码将官方的ruby源替换成国内淘宝的源:

gem sources --remove https://rubygems.org/

gem sources -a http://ruby.taobao.org/

gem sources -l

还有一点需要注意,pod setup在执行时,会输出Setting up CocoaPods master repo,但是会等待比较久的时间。这步其实是Cocoapods在将它的信息下载到~/.cocoapods目录下,如果你等太久,可以试着cd到那个目录,用du -sh *来查看下载进度。你也可以参考本文接下来的使用cocoapods的镜像索引一节的内容来提高下载速度。

使用CocoaPods

使用时需要新建一个名为Podfile的文件,以如下格式,将依赖的库名字依次列在文件中即可

platform :iospod'JSONKit','~> 1.4'

pod'Reachability','~> 3.0.0

'pod'ASIHTTPRequest'

pod'RegexKitLite'

然后你将编辑好的Podfile文件放到你的项目根目录中,执行如下命令即可:

cd"your project home"pod install

现在,你的所有第三方库都已经下载完成并且设置好了编译参数和依赖,你只需要记住如下2点即可:

使用CocoaPods生成的.xcworkspace 文件来打开工程,而不是以前的.xcodeproj 文件。

每次更改了Podfile文件,你需要重新执行一次pod update命令。

查找第三方库

你如果不知道cocoaPods管理的库中,是否有你想要的库,那么你可以通过pod search命令进行查找,以下是我用pod search json查找到的所有可用的库:

关于.gitignore

当你执行pod install之后,除了Podfile外,CocoaPods还会生成一个名为Podfile.lock的文件,你不应该把这个文件加入到.gitignore中。因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install不会更改版本,要pod update才会改Podfile.lock了。这样多人协作的时候,可以防止第三方库升级时造成大家各自的第三方库版本不一致。

CocoaPods的这篇官方文档也在What is a Podfile.lock一节中介绍了Podfile.lock的作用,并且指出:

This file should always be kept under version control.

解决cocoapods 更新慢的问题

pod install --verbose --no-repo-update

pod update --verbose --no-repo-update

你可能感兴趣的:(使用CocoaPods管理第三方类库)