Xcode 8.0和macOS 10.12以上安装CocoaPods的流程

花开一朵

在之前的一个项目安装过CocoaPods,当时使用的Xcode 7,Mac系统为OS X 10.11,安装流程顺利,可是在Xcode 8.0和macOS 10.12上安装遇到了一些问题,然后网上查询了一些相关资料,自己整理了一下新的安装步骤和流程。

众所周知,CocoaPods是iOS项目类库的管理工具,可以让开发者很方便集成各种第三方库,而不用去网站上逐一下载,再逐一将文件夹拖进项目中,还得添加相关的系统依赖库。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省配置开源库的时间。

1. CocoaPods的安装步骤

在安装CocoaPods之前,首先要在本地安装好Ruby环境,默认情况下,Mac自带Ruby环境。因为Ruby的默认源rubygems.org使用的是亚马逊的云服务,在国内使用会被墙,所以需要更换一下Ruby的源。

1.1 首先打开终端,输入以下命令符检查Ruby源

$ gem sources - l

如果你的镜像地址是如下图1-1所示:


图1-1

那么就需要替换Ruby源。

1.2 替换Ruby源,输入以下命令符,删除目前的Ruby源

$ gem sources --remove https://rubygems.org/

1.3 添加新的Ruby源,输入以下命令符:

$ gem sources -a https://gems.ruby-china.org/

之前使用的是以下这个

$ gem sources -a https://ruby.taobao.org/

但是这个已经不维护了,请查看相关信息

再次更新:

https://gems.ruby-china.org

改为:

https://gems.ruby-china.com

.com 代替 .org 的域名,其他一切不变!

请查看更新信息

1.4 添加新的Ruby源之后,可以查看是否替换成功 

 $ gem sources -l 

成功就如下图1-2所示:


图1-2

到这里就算已经成功配置完环境了,下一步就是安装了。

1.5 安装CocoaPods,继续在终端输入命令:

macOS 10.12以上使用的是

$ sudo gem install -n /usr/local/bin cocoapods

OS X 10.11以下使用的是

$ sudo gem install cocoapods

1.6 等待以上命令符执行完毕,继续输入以下命令:

$ pod setup

出现如下图1-3所示:


图1-3

出现Setting up CocoaPods master repo 后会卡住一段时间,

可以在新开一个终端的窗口,输入以下的命令,查看下载文件的大小。

$ cd ~/.cocoapods

$ du -sh 

下载完毕后,所占磁盘的大小在894M左右。

1.7 下载成功,输入以下命令:

$ pod --version

可以看到安装成功cocoapods的版本。

当然我们也可以对cocoapods卸载重新安装,输入以下命令:

$ sudo gem uninstall cocoapods  //卸载

$ sudo gem install -n /usr/local/bin cocoapods  //安装

或者 $ sudo gem install cocoapods

cocoapods卸载重装的例子参考。如果升级已有的cocoapods,则输入以下命令:

$ sudo gem update cocoapods  //升级cocoapods

查看本地安装过的cocoapods相关东西,命令如下:

$ gem list --local | grep cocoapods

2. CocoaPods的使用

需要查看一下CocoaPods是否安装成功,这时只需在终端输入 pod search +开源类库的名字 回车即可。例如:

$ pod search AFNetworking

安装成功就会显示出相关的所有第三方开源类库。

2.1 怎么在项目中使用呢,首先需要在终端里面cd到项目文件夹里面,如下所示:

$ cd 项目文件夹路径    (可以直接把拖动项目文件夹到终端光标处,系统自动生成路径)

2.2 创建Podfile 文件

$ touch Podfile

2.3 编辑Podfile文件

$ vim Podfile

接下来,在Podfile文件里面进行书写

cocoapods版本1.0.1之前的:

pod 'AFNetworking','~>2.6.0' #设置框架的名称和版本号

cocoapods版本是1.0.1之后的:

platform :ios, '8.0'      #用来设置所有第三方库所支持的iOS最低版本

target 'MyApp' do      #MyApp 就是你的项目名

pod 'AFNetworking', '~> 3.1.0'

end

版本号的规则:

'>1.0' 可以安装任何高于1.0的版本

'>=1.0' 可以安装任何高于或等于1.0的版本

'<1.0' 任何低于1.0的版本

'<=1.0' 任何低于或等于1.0的版本

'~>0.1' 任何高于或等于0.1的版本,也就是0.1以上(含0.1),但是不包含高于1.0的版本,相当于1.0以下(不含1.0)。

'~>0' 任何版本,相当于不指定版本,默认采用最新版本号 。

编辑Podfile文件之后, 

按 i 可编辑 

esc 退出编辑

:wq  可保存退出

:q 不保存退出

扩展Podfile语法参考

2.4 安装第三方开源类库

编辑Podfile文件之后,保存退出,然后终端输入命令:

$ pod install

等命令运行完,项目就已经是添加了cocoapods管理,启动项目就是点击.xcworkspace后缀的文件,在iOS项目中,导入头文件就能调用第三方库了。

2.5 更新第三方开源类库

以后需要添加、更新、删除某个第三方库,只要编写好Podfile文件,在终端输入:

$ pod update

之后运行就OK了。

如果升级某一个指定的第三方库,则输入以下命令:

$ pod update 第三方库名称

3. CocoaPods安装失败问题总结

安装不成功的解决办法之前,先解释几个名词。

Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言。可运行于多种平台,如 Windows、MAC OS 和 UNIX 的各种版本。且和Apple系列的程序员最直接关联的就是Mac的开发环境,直接关联于Cocoapods工具。但是,cocoapods工具与Ruby的版本有一定的关联性,难免不涉及到升级。

gem是基于Ruby的一些开发工具包,不同的Gem可能会依赖不同的Ruby版本,通常来讲,新版本特性更多,用起来更便利。

rails 是一个基于Ruby的网页服务器的架构,rails也算是一组gem,专门用来做网站的。 当然它们三个各自有各自的版本。

rvm是什么?rvm是Ruby版本管理器。为什么要安装rvm呢?因为rvm可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。

3.1 错误提示一

如果提示下面的错误提示,则需要安装高版本ruby,需要在终端进行升级,升级之前先安装rvm。

ERROR: Error installing cocoapods:

activesupport requires Ruby version >= 2.2.2.

第一步:安装rvm

$ curl -L get.rvm.io | bash -s stable

如下图3-1所示:

图3-1

这一步需要下载资源包一段时间,稍等片刻,下载完毕后再输入以下命令:

$ source ~/.profile 

等待终端加载完毕后输入:

$ rvm -v

如下图3-2所示:

图3-2

如果能显示版本号,则安装成功。

第二步:安装ruby

列出ruby可安装的版本信息

$ rvm list known

如下图3-3所示:

图3-3

安装一个ruby版本

$ rvm install 2.2

如果想设置为默认版本,可以用这条命令来完成

$ rvm use 2.0.0 --default

查看已安装的ruby

$ rvm list

卸载一个已安装ruby版本

$ rvm remove 2.2

3.2 错误提示二

如果在终端安装过程中出现以下错误提示:

ERROR:  While executing gem ... (Gem::FilePermissionError)

You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

解决办法升级gem,在终端输入:

$ sudo gem update --system

注意rvm、ruby、gem是顺序更新的。

查看已安装的gem,输入:

$ gem -v 

则可以看到gem的安装版本号。

3.3 错误提示三

pod setup之后,出现Setting up CocoaPods master repo,在等待过程中,可能出现下面错误:

[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master

Cloning into 'master'...

fatal: unable to access 'https://github.com/CocoaPods/Specs.git/': SSLRead() return error -9806

推测可能是网络带宽问题,git下载速度比较慢,所以会出现这种错误。

失败的解决办法,可以手动去克隆一份到repos目录下面:

通过终端,进入到   

$ cd ~/.cocoapods/repos

然后通过终端 

$ git clone https://github.com/CocoaPods/Specs.git

成功后通过finder的前往文件夹进行查看      ~/.cocoapods/repos

将clone的Specs项目的文件夹改名为master, 然后执行命令:

$ pod setup

更新:

最近发现CocoaPods无法从Github上clone下来,是因为https://github.com/CocoaPods/Specs.git 国内镜像 停止更新。解决办法是使用国内的镜像地址(https://gitclub.cn/CocoaPods/Specs.git),具体详见说明。然后在从前往文件夹的方式进入~/.cocoapods/repos目录下,再将文件夹重命名为master。然后执行命令:

$ pod setup

以下方式也可以:

该过程作用与 pod setup作用相同。

$ git clone https://github.cn/CocoaPods/Specs.git  ~/.cocoapods/repos/master

3.4 错误提示四

有的情况下搜索第三方库,例如搜索AFNetworking,也就是在执行以下命令符之后,

$ pod search AFNetworking

会出现以下错误“:

[!] Unable to find a pod with name, author, summary, or description matching `AFNetworking`

解决办法,就是清除搜索的缓存,执行以下命令就可以搜索出来想要搜索的第三方库了。

$ rm ~/Library/Caches/CocoaPods/search_index.json 

3.5 错误提示五

Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.

You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.

解决办法:

$ pod repo add master https://github.cn/CocoaPods/Specs.git

接下来提示执行 ’ pod setup ’,如果出现以下警告提示:

[!] The`master`repo isnotagit repo.

则从前往文件夹的方式进入~/.cocoapods/repos目录下,然后删除master文件夹

再执行以下命令:

$ pod setup

3.6 补充一些终端命令

rvm list  #查看已安装ruby

rvm list known  #列出ruby可安装版本信息

rvm remove 2.2.2  #卸载一个已安装的ruby版本

gem source  #查看已有源

gem list  #查看local gems

gem list --local | grep cocoapods #查看本地电脑上安装了哪些版本的CocoaPods

which pod  #查看pod 的本地地址

快捷键ctrl + c  前台进程的终止

快捷键 ctrl + z 前台进程的挂起,可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行

总结:

有不足之处还望谅解和指点,另给出参考的博客链接。

Xcode8 macOS Sierra 10.12 安装 CocoaPods

最新的 cocoapods 安装与使用(2016.11)

Mac上更新Ruby

Mac 如何升级 Ruby 版本

cocoapods:安装/更新Ruby环境教程

使用CocoaPods时提示安装高版本ruby遇到的坑。

使用CocoaPods时遇到pod setup失败的解决办法

CocoaPods错误

CocoaPods安装最详细教程

将CocoaPods的版本更新到最新版本

CocoPods安装使用和安装过程中遇到的问题及解决办法

CocoaPods的安装及更新

推荐阅读更多精彩内容