关于 Cocoa Pods


Cocoa Pods 是什么?

当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。而如何有效且方便的管理这些类库就不是很容易了。主要有两方面的问题:


  1. 可能你需要使用的某个类库又可能会用到其他类库,所以要使用它,必须得另外下载其他类库,而这个其他类库又有可能用到另外的类库。如果,手动去一个个下载所需类库这就有点麻烦了。
  2. 另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那就太好了,而CocoaPods就是这样一款具有这些功能的管理类库的工具。

CocoaPods应该是iOS最常用和最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完美解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。

Cocoa Pods 简单来说就两句话集成/更新第三方类库简化第三方类库的使用

安装环境


这是我的安装环境。2015款 Mac Book Pro 13寸 系统版本 10.11.4

安装过程


以下安装都是在终端(Terminator)下执行的,如果你不知道什么是**终端**的话,请自行Google。这里不做介绍了。

安装之前请确认本地已经部署好了 Ruby 环境(MAC 系统好像自带 Ruby 环境),但是为了保险还是确认一下的好。在终端里输入ruby -v查看一下当前系统 ruby 的版本信息。这是我的系统中 Ruby 版本信息。

1
2
Rango-MBP:~ rango$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]

顺便再输入gem -v查看一下 gem 的版本信息,不要问我 gem 是什么我还真不知道😄。

1
2
Rango-MBP:~ rango$ gem -v
2.6.4

如果你觉得 gem 版本太低 可以用这行命令sudo gem update --system来更新一下 gem ,好了既然这两个都没有问题了,下面要开始正式安装了。


  1. 在终端输入以下命令sudo gem install cocoapods( 因为我的系统版本是OS X EL Capitan 10.11.4 所以需要输入以下命令),不要问我为什么,我也不知道,反正这么输入就对了(如果输入sudo gem install cocoapods有反应就优先这个吧)。
1
sudo gem install -n /usr/local/bin cocoapods

你可能会发现没有任何反应,什么原因呢,因为被墙了(我靠,这都被墙!),那要怎么办呢?我们可以用淘宝的 ruby 镜像来访问。 2. 接下来在终端中输入以下命令

1
gem sources --remove https://rubygems.org/
  1. 等有了反应之后再输入以下命令:
1
gem sources -a https://ruby.taobao.org/
  1. 然后验证一下,查看是否替换成功。在终端输入
1
 gem sources -l
  1. 当你的终端出现以下文字时,说明替换成功了(如果没有出现这个信息那就把上面步骤 2 和步骤3 再执行一遍吧)。
1
2
3
 *** CURRENT SOURCES ***

 https://ruby.taobao.org/
  1. 这个时候再次在终端中输入之前的命令sudo gem install cocoapods 我这里 需要输入
1
sudo gem install -n /usr/local/bin cocoapods
  1. 敲入以上命令后,等待一会,Cocoa Pods 就安装好了,这时候终端上应该是类似这样的 心想,我靠,太爽了,终于安装好了吧。

(如果提示ruby版本过低请按照此方法升级ruby)。 期间可能会问你 sudo 管理员密码,以及自动通过 Homebrew 安装依赖包,等待一段时间后就可以成功安装好 RVM。

  1. 接下来还有一步需要执行,在终端下输入以下命令(下载服务器中所有第三方框架/类库信息,缓存到电脑本地)
1
pod setup

然后你就发现我擦什么鬼?终端出现一行代码

1
Setting up CocoaPods master repo

我靠,这是什么东东,不要怕有这行命令说明 Cocoa Pods 正在将一些文件下载到~/.cocoapods 这个文件夹里。这可能是一个漫长的过程,至少我在下载时,就过了好久才提示成功的。如果你不放心是否是正在下载中,可以再开一个终端页面,然后在cd ~/到主目录下,然后输入以下命令查看一个这个.cocoapods文件夹的大小。

1
du -sh .cocoapods

多查看几次,如果发现文件夹大小正在增长那就没问题了,那接下就是漫长的等待了,等它下载完成就好了(我从其他处看到的都是说文件大小在100MB左右,说好的100MB 左右的呢,我最终查看到的文件夹大小是702MB)。

1
2
du -sh .cocoapods
702M	.cocoapods

下载完成后会在终端提示以下信息的

1
2
3
Rango-MBP:~ rango$ pod setup
Setting up CocoaPods master repo
Setup completed

这样就安装完成了。

PS:当然这里也可能下载不下来,如果下载不下来那就只好科学上网了(或者更换第三方框架仓库源。 1)移除本地的缓存仓库pod repo remove master 2)pod repo add master http://git.oschina.net/akuandev/Specs.git若失败则替换为 https://gitcafe.com/akuandev/Specs.git 3) 重新缓存pod setup)。

如何使用 cocoapods?


新建一个 Xcode 工程(例如 Demo_Cocoapods),我的这个工程路径就放在桌面(路径为/Users/rango/Desktop/Demo_Cocoapods)。然后在终端中输入

1
cd /Users/rango/Desktop/Demo_Cocoapods

进入到这个项目的文件夹下,然后执行初始化操作

1
Pod init

现在ls查看一下当前路径下是不是多了一个 PodFile 文件,然后用vim打开这个文件,编辑一下这个配置文件:

1
vim Podfile

我的配置文件打开默认是这样的

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Uncomment this line to define a global platform for yo    ur project
# platform :ios, '9.0'

target 'Demo_Cocoapods' do
  # Uncomment this line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for Demo_Cocoapods

end      

这里我们需要修改一下,在后面加入我需要的第三方类库名字AFNetworking 和版本号3.0等信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Uncomment this line to define a global platform for your project
platform :ios, '9.0'

target 'Demo_Cocoapods' do
  # Uncomment this line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for Demo_Cocoapods

source 'https://github.com/CocoaPods/Specs.git'

pod 'AFNetworking', '~> 3.0'

end      

然后保存退出。接下来就是联网安装 Podfile 中添加的类库了。输入 pod install。会根据Podfile.lock文件记录的版本号, 去下载对应版本的第三方框架

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Rango-MBP:Demo_Cocoapods rango$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (3.1.0)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `Demo_Cocoapods.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the
Podfile and 1 total pod installed.

看到这些信息,就说明安装成功了。这时候我们看一下,项目文件夹下多了一些文件和文件夹。 这样就说明安装成功了,这时候我们就可以愉快的使用 cocoapods 来管理项目中的第三方类库了,这里需要注意的是我们需要使用哪个.xcworkspace结尾的文件打开项目。

更新第三方框架 pod update 如果Podfile中, 第三方框架没有明确声明版本号, 就会自动将第三方框架升级到最新版本, 并且更新Podfile.lock文件

安装中的常见错误及解决办法


  1. 如果你之前对 Xcode.app 改过名字,例如改成了Xcode7.1.app这样就很可能会安装失败。如果没有那最好。
  2. 系统升级到10.11之后,CocoaPods报错: command not found, 解决方案
1
2
3
sudo gem update --system
sudo gem uninstall cocoapods
sudo gem install -n /usr/local/bin cocoa pods