发布于 2016-01-14 08:06:42 | 171 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的精品教程,程序狗速度看过来!

CocoaPods Xcode依赖库管理

CocoaPods 是一个用来管理 Xcode 依赖库的项目。


在我刚开始学习iOS开始时,一些优秀的开源框架的README.md中总有一句pod NAME。当时不知道这句话是用来做什么的。

在工作之后,往往一个项目会用到多个框架。把它们挨个Add Files,然后根据框架的README.md来添加相关的系统依赖和设置正确的编译参数。这样做固然是可以的,但是却平白无故地增加了工作量,而且太容易出错了。

所以,我开始学习使用CocoaPods来做依赖管理。

什么是CocoaPods

CocoaPods是iOS和Mac项目的依赖管理工具。项目所需要的依赖都被写入叫做Podfile的文件中。CocoaPods会将它们集成到我们的项目中,并且帮我们设置好系统依赖以及编译参数。

安装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

使用CocoaPods

在使用之前,确保你需要的库在Specs repository或者cocoapods.org上可以查询到。

在新的项目中使用CocoaPods

  1. 创建一个新的Xcode项目。

  2. 打开终端,执行$ cd your project direction,进入到你的项目目录下。

  3. $ touch Podfile,创建一个Podfile文件。

  4. 打开Podfile,在第一行写下platform :ios, '8.0',指定平台以及所支持的版本。

  5. 在单独一行用pod 'libraryName',指定需要导入的依赖。

  6. 在终端中执行$ pod install,就会为项目导入执行的依赖。

CocoaPods提供$ pod init,可以为我们创建具有模板的Podfile文件。在$ pod install执行完成之后,会生成一个projectName.xcworkspace文件,之后使用这个文件来打开项目。

关于pod install 和 pod update

pod install

第一次为项目添加依赖或者每一次修改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 update之前,可以执行pod outdated来查看有哪些pods有新的版本。

当你执行pod update PODNAME时,CocoaPods会尝试发现PODNAME的可更新的版本,而不会去关注Podfile.lock中的版本。它会把依赖更新到最新的版本。

当执行pod update,而不带指定的PODNAME时,CocoaPods就会将所有列在Podfile中的依赖更新到最新版本。

当pods被更新时,相应地,Podfile.lock中的pods的版本号也会更新。

Podfile.lock

这个文件在多人合作同一个项目时可以发挥关键作用。它可以保证每个成员的pods的版本都是统一的。每一次修改Podfile.lock后,你必须要commit & push它到Repo。

当然,你可以把pod install之后生成的Pods文件夹放入到Repo中,来管理依赖版本。



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务