发布于 2016-01-14 08:06:42 | 189 次阅读 | 评论: 0 | 来源: PHPERZ
CocoaPods Xcode依赖库管理
CocoaPods 是一个用来管理 Xcode 依赖库的项目。
在我刚开始学习iOS开始时,一些优秀的开源框架的README.md中总有一句pod NAME
。当时不知道这句话是用来做什么的。
在工作之后,往往一个项目会用到多个框架。把它们挨个Add Files
,然后根据框架的README.md
来添加相关的系统依赖和设置正确的编译参数。这样做固然是可以的,但是却平白无故地增加了工作量,而且太容易出错了。
所以,我开始学习使用CocoaPods
来做依赖管理。
CocoaPods是iOS和Mac项目的依赖管理工具。项目所需要的依赖都被写入叫做Podfile
的文件中。CocoaPods会将它们集成到我们的项目中,并且帮我们设置好系统依赖以及编译参数。
CocoaPods是基于Ruby的。OS X是自带Ruby的。所以不需要再次安装Ruby。
$ [sudo] gem install [-n /usr/local/bin] cocoapods
说明:这里的命令格式受Ruby的版本以及OS X版本的影响。如果你的Ruby是2.3.0,那么直接执行gem install就可以了。
如果需要更新CocoaPods,执行$ [sudo] gem install cocoapods --pre
。如果第一次安装使用了sudo
,那么在执行安装操作时需要再次使用sudo,否则会提示Permission denied
。
在使用之前,确保你需要的库在Specs repository或者cocoapods.org上可以查询到。
创建一个新的Xcode项目。
打开终端,执行$ cd your project direction
,进入到你的项目目录下。
$ touch Podfile
,创建一个Podfile文件。
打开Podfile
,在第一行写下platform :ios, '8.0'
,指定平台以及所支持的版本。
在单独一行用pod 'libraryName'
,指定需要导入的依赖。
在终端中执行$ pod install
,就会为项目导入执行的依赖。
CocoaPods提供$ pod init
,可以为我们创建具有模板的Podfile
文件。在$ pod install
执行完成之后,会生成一个projectName.xcworkspace
文件,之后使用这个文件来打开项目。
第一次为项目添加依赖或者每一次修改Podfile
后使用pod install
。
每次pod install
被执行,都会下载和安装新的pods。被安装的pods的版本都会写入到Podfile.lock
文件中。这个文件会一直跟踪已安装的每一个pods的版本号,并且锁定这些版本号。
当你执行pod install
,它只会解决那些没有在Podfile.lock
文件中列出来的pods的依赖。
对于Podfile.lock
中列出的pods,只会下载Podfile.lock
明确记录的版本,而不会去查看是否有新的版本。
对于没有在Podfile.lock
中列出的pods,会去匹配Podfile
文件中描述的版本,如pod 'AFNetworking', '~> 3.0'
。
在执行pod update
之前,可以执行pod outdated
来查看有哪些pods有新的版本。
当你执行pod update PODNAME
时,CocoaPods会尝试发现PODNAME
的可更新的版本,而不会去关注Podfile.lock
中的版本。它会把依赖更新到最新的版本。
当执行pod update
,而不带指定的PODNAME
时,CocoaPods就会将所有列在Podfile
中的依赖更新到最新版本。
当pods被更新时,相应地,Podfile.lock
中的pods的版本号也会更新。
这个文件在多人合作同一个项目时可以发挥关键作用。它可以保证每个成员的pods的版本都是统一的。每一次修改Podfile.lock
后,你必须要commit & push它到Repo。
当然,你可以把pod install
之后生成的Pods
文件夹放入到Repo中,来管理依赖版本。