学习iOS:使用CocoaPods管理iOS包依赖

iOS的生态中CocoaPods是包依赖管理工具,等同于node生态中的npm,OSX中的brew,linux的apt-get、yum这些工具,下面介绍下CocoaPods的安装和基本使用方法

安装

首先要有ruby(Mac自带哦~),然后执行gem

sudo gem install cocoapads
pod setup

这时候估计会报:Operation not permitted - /usr/bin/xcodeproj错误,需要执行下面的操作:

 mkdir -p $HOME/Software/ruby
$ export GEM_HOME=$HOME/Software/ruby
$ gem install cocoapods
[...]
1 gem installed
$ export PATH=$PATH:$HOME/Software/ruby/bin
$ pod --version
1.0.0

我是修改了.bash_profile(zsh修改.zshrc),将export GEM_HOME=$HOME/Software/ruby放进去,把$HOME/Software/ruby/bin加入PATH。这时候在再执行gem install cocoapads 就不会报错了。

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

使用 CocoaPods 的镜像索引

所有的项目的 Podspec 文件都托管在https://github.com/CocoaPods/Specs。第一次执行pod setup时,CocoaPods 会将这些podspec索引文件更新到本地的 ~/.cocoapods/目录下,这个索引文件比较大,有 80M 左右。所以第一次更新时非常慢,笔者就更新了将近 1 个小时才完成。
一个叫 akinliu 的朋友在 gitcafe 和 oschina 上建立了 CocoaPods 索引库的镜像,因为 gitcafe 和 oschina 都是国内的服务器,所以在执行索引更新操作时,会快很多。如下操作可以将 CocoaPods 设置成使用 gitcafe 镜像:

pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo update

将以上代码中的 https://gitcafe.com/akuandev/Specs.git 替换成 http://git.oschina.net/akuandev/Specs.git 即可使用 oschina 上的镜像。

使用CocoaPads管理iOS依赖

CocoaPads的基本命令是pod,常用的方法如下

  • 初始化:进入项目路径 pod init
  • 安装:pod MODULE_NAME
  • 安装特定版本的依赖:pod MODULE_NAME, 版本,例如:pod 'Objection', '0.9'
  • 更新 pod update
  • 搜索 pod search MODULE_NAME

Podfile介绍

pod init的时候会在你项目中创建一个Podfile 文件,很类似npm的 package.json,如果一个项目中已经有了Podfile, 就可以直接进入该目录然后执行 pod install,就会安装上Podfile中的依赖包

Podfile.lock介绍

执行pod install之后会生成Podfile.lock放在目录中,为了保证每次执行pod install的版本一致性,所以建议把Podfile.lock放入版本库维护,如果需要更新某个包的版本,执行pod update,则Podfile.lock文件会发生变化,记得提交到版本库

参考文章