简介
在 iOS 开发中不可避免地要使用第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库,可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,使得我们可以节省设置和更新第三方开源库的时间。
CocoaPods 的安装
使用 CocoaPods,首先要下载安装,下载安装 CocoaPods 需要 Ruby 环境。mac OS 本身自带 Ruby,但还是更新一下保险。
查看下当前 ruby 版本:打开终端输入 ruby -v。
升级Ruby环境
1、终端输入:$gem update --system
如果出现 ERROR: While executing gem ... (Gem::FilePermissionError) You don‘t have write permissions for the /Library/Ruby/Gems/2.0.0 directory。这个是因为你没有权限去更新 Ruby
2、这时可以在终端使用:$sudo gem update --system 来进行升级。终端输入如下命令,把 Ruby 镜像指向 ruby-china
(注意:目前淘宝的源已经不能用了,taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务)
//查看当前源,命令:gem sources -l
// 移除旧的源,命令: gem sources --remove
$ gem sources --remove https://......
// 添加新的源,命令: gem sources -a https://gems.ruby-china.org/
$ gem sources -a https://gems.ruby-china.org/
修改之后,如果执行命令
$ sudo gem update --system
出现错误
Updating rubygems-update
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems
可以使用 HomeBrew (http://brew.sh/) 来安装 ruby
$ brew install ruby
3、下载安装CocoaPods
$ sudo gem install cocoapods
使用CocoaPods
1、Xcode 新建一个项目
2、终端中,cd到项目总目录(注意:包含 Project 文件夹、Project.xcodeproj、Project的那个总目录)
3、建立Podfile(配置文件)
touch Podfile(创建Podfile文件)
在 Podfile 文件中输入:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'Project' do
pod 'AFNetworking', '~> 3.1.0'
end
target 'xxx',target 后面是你的项目名称。
4、确定终端cd到项目总目录,然后输入 pod install,等待一会。
CocoaPods 会帮我们从git clone下来配置好的这些代码。后面的部分表示代码的版本号,一般来说和tag挂钩。
5、完成之后,在文件夹下生成了 Project.xcworkspace 文件,打开就会发现已经导入了,Podfile 文件中的第三方库。
6、当需要同时导入多个第三方时需要修改 Podfile了,编辑修改Podfile文件,这时需要重新执行一次 pod install 命令。
Podfile.lock
当你执行pod install之后,除了 Podfile 外,CocoaPods 还会生成一个名为Podfile.lock的文件,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到.gitignore中。因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install 不会更改版本,要pod update才会改Podfile.lock了。这样多人协作的时候,可以防止第三方库升级时造成大家各自的第三方库版本不一致。
第三方库查询
CocoaPods可以查找你想要的第三方库
终端输入命令:pod search **
例如:$ pod search AFNetworking,然后就会显示相应的第三方库信息
CocodPods 相关命令
1、pod install :
第一次在工程里面使用pods的时候使用,也是每次编辑 Podfile(添加、移除、更新)后使用。
每次运行pod install命令的时候,在下载、安装新的库的同时,也会把你安装的每个库的版本都写在了Podfile.lock文件里面。这个文件记录你每个安装库的版本号,并且锁定了这些版本。
当你使用pod install它只解决了pods里面,但不在Podfile.lock文件里面的那些库之间的依赖。对于在Podfile.lock里面所列出的那些库,会下载在Podfile.lock里面明确的版本,并不会去检查是否该库有新的版本。对于还不在Podfile.lock里面的库,会找到Podfile里面描述对应版本(例如:pod 'AFNetworking', '~> 3.1.0')。
2、pod update:
当你运行 pod update PODNAME 命令时,CocoaPods会帮你更新到这个库的新版本,而不需要考虑Podfile.lock里面的限制,它会更新到这个库尽可能的新版本,只要符合Podfile里面的版本限制。
如果你运行pod update,后面没有跟库的名字,CocoaPods就会更新每一个Podfile里面的库到尽可能的最新版本。
pod install --verbose --no-repo-update
只安装新增的库,已经安装的库不更新
pod update 库名 --verbose --no-repo-update
只更新指定库名的第三个库,其他库不更新
3、pod outdated:
当你运行pod outdated命令,CocoaPods会列出那些所有较Podfile.lock里面有新版本的库(那些当前被安装着的库的版本)。这个意思就是,如果你运行pod update PODNAME,如果这个库有新的版本,并且新版本仍然符合在Podfile里的限制,它就会被更新。
4、使用情况
第一次获取pod库时,应使用pod install。需要更新依赖库时,先使用 pod outdated 查看有哪些库有更新,再使用 pod update PODNAME 有目的的更新指定库。
提交代码时,请注意一定同时提交Podfile.lock文件,以便其他人能同步到与你相同的pod库版本。
同步其他团队成员的修改时,请使用pod install。
pod outdated 和 pod update 都会更新spec仓库,但是pod install不会,所以对于经常使用的pod库,建议经常pod outdated关注更新情况。
问题
1、在使用时可能出现一下问题
解决方法:打开 Xcode 偏好设置,设置一下 Command Line Tool 就可以了
Reference
http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
https://guides.cocoapods.org/using/pod-install-vs-update.html
http://blog.devtang.com/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/