您的位置:首页 > 移动开发 > IOS开发

CocoaPods安装及使用

2016-06-28 21:38 597 查看

前言

在iOS项目中使用第三方类库可以说是非常常见的事,但是要正确地配置他们有时候是非常繁琐的事情,幸运的是CocoaPods是一个很好的解决方案。

一、什么是CocoaPods

CocoaPods是一个负责管理iOS项目中第三方开源库的工具。CocoaPods的项目源码在Github上管理。该项目开始于2011年8月12日,在这两年多的时间里,它持续保持活跃更新。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间

Cocoapods意义体现在两个方面。

第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。

第二,使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较“标准的”,而不是网上随便找到的,这样可以让我们找到真正好用的类库。

二、CocoaPods的核心组件

CocoaPods是用Ruby写的,并划分成了若干个Gem包。

CocoaPods在解析执行过程中最重要的几个包的路径分别是:CocoaPods/CocoaPods、 CocoaPods/Core和 CocoaPods/Xcodeproj。

1、CocoaPods/CocoaPods

CocoaPods / CocoaPod:这是面向用户的组件,每当执行一个pod命令时,这个组件将被激活。它包括了所有实用CocoaPods的功能,并且还能调用其他gem包来执行任务。

2、CocoaPods/Core

CocoaPods / Core:Core gem提供了与CocoaPods相关的文件(主要是podfile和podspecs)的处理。

(1)、Podfile:该文件用于配置项目所需要的第三方库,它可以被高度定制。本文中我们主要在这里做动作。

(2)、Podspec:该文件描述了一个库将怎样被添加进工程中。.podspec文件可以标识该第三方库所需要的源码文件、依赖库、编译选项,以及其他第三方库需要的配置。

3、CocoaPods / Xcodeproj

CocoaPods / Xcodeproj:这个包负责处理工程文件,它能创建以及修改.xcodeproj文件和.xcworkspace文件。它也可以作为一个独立的包使用,当你要编写修改项目文件的脚本时,可以考虑使用CocoaPods/Xcodeproj。

三、Cocoapods安装步骤

1、升级Ruby环境

终端输入:

$gem update --system


此时会出现

Updating rubygems-update
Fetching: rubygems-update-2.6.6.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


这个是因为你没有权限去更新Ruby。

这个时候你可以在终端使用:

$sudo gem update —system


来进行升级。



2、ruby镜像

安装CocoaPods时我们要访问cocoapods.org,该网站可能被我们大天朝墙了,这样下载安装可能会是龟速,幸好我们可以用淘宝的Ruby镜像来访问该网站,方法如下:

(1)、移除现有 Ruby 默认源

$ gem sources --remove https://rubygems.org/[/code] 
(2)、使用新的源

$ gem sources -a https://ruby.taobao.org/[/code] 
(3)、验证新源是否替换成功

$ gem sources -l




3、安装Cocoapods

在终端输入命令

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


备注:苹果系统升级 OS X EL Capitan 后安装改为:

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

$ pod setup


注意:

执行pod setup 命令

出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里;

cd 到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次,这个目录最终大小是733M,就是完成了,下载时间较长,请耐心等待。

ps:

错误提示

Error installing cocoapods:  activesupport requires Ruby version >= 2.2.2.


解决方案 :

(1)、安装 RVM baby 版本管理器

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


//________等安装完成 出现下面这行提示以下___________

In case of problems: https://rvm.io/helpandhttps://twitter.com/rvm_io[/code] 
执行

$source ~/.bashrc

$source ~/.bash_profile


测试是否安装正常

$rvm -v


//________提示以下___________

rvm 1.27.0 (latest) by Wayne E. Seguin, Michal Papis[https://rvm.io/]


(2)、用RVM升级Ruby查看当前ruby版本

$ruby -v

$rvm list known


//________提示以下___________

# MRI Rubies

[ruby-]1.8.6[-p420]

[ruby-]1.8.7[-head] # security released on head

[ruby-]1.9.1[-p431]

[ruby-]1.9.2[-p330]

[ruby-]1.9.3[-p551]

[ruby-]2.0.0[-p648]

[ruby-]2.1[.8]

[ruby-]2.2[.4]

[ruby-]2.3[.0]

[ruby-]2.2-headruby-head

# for forks use: rvm install ruby-head---url https://github.com/github/ruby.git --branch 2.2

# JRuby


安装ruby 2.2.2 执行

$rvm install 2.2.2


打印

ruby-2.2.2 - #validate archive
ruby-2.2.2 - #extract
ruby-2.2.2 - #validate binary
ruby-2.2.2 - #setup
ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2@global
ruby-2.2.2 - #importing gemset
/Users/abc/.rvm/gemsets/global.gems..............................
ruby-2.2.2 - #generating global wrappers........
ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2
ruby-2.2.2 - #importing gemsetfile /Users/abc/.rvm/gemsets/default.gems
  evaluated to empty gem list
ruby-2.2.2 - #generating default wrappers........
Updating certificates in '/etc/openssl/cert.pem'.
mkdir: /etc/openssl: Permission denied
mkdir -p "/etc/openssl" failed, retrying with sudo
LiuWenqiang password required for 'mkdir -p /etc/openssl':
and sudo mkdir worked


则说明安装成功了

查看版本

$ pod --version


打印:

1.0.1


4、 更新 gem

$sudo gem update --system


5、更新master

$ pod repo update master


6、新建 Podfile 文件

在终端用 cd 指令到文件夹内,新建 Podfile 文件

$ touch Podfile


执行

$ pod install


7、添加三方库

(1)、查找

$ pod search 第三方


例如:

$ pod search AFNetworking




退出:

esc+Q

(2)、编辑Podfile文件

$ vim Podfile


进入如下页面:



然后紧接着按键盘上的“i”键,变成如下状态,这个时候可以对Podfile文件进行编辑:

$ platform:ios, '7.0'
$ target 'firstPodDemo' do
$   pod 'AFNetworking', '~> 3.1.0'
$ end




在编辑完成后按”esc”,在按”shift”+”:”,这个时候输入wq,点击回车,保存并退出。



7、导入三方库

在终端输入命令安装相应的第三方类库

$ pod install


然后安装成功



之后关闭工程,从类型为工程名.xcworkspace文件打开即可。

四、可能遇到的错误提示及解决方法

Error 1:

Error fetching http://ruby.taobao.org/: 
bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)


解决方案:

把安装流程中

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


改为:

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

Error 2:

[!] Unable to satisfy the following requirements:

- `AFNetworking (~> 2.3.1)` required by `Podfile`

Specs satisfying the `AFNetworking (~> 2.3.1)` dependency were found, but they required a higher minimum deployment target.


解决方案:

Podfile 文件 中 platform:ios, ‘8.0’ 后边的 8.0 是平台版本号 ,一定要加上。

Error 3:

The dependency `AFNetworking (~> 2.3.0)` is not used in any concrete target.


解决方案:

新的版本cocoapods

把如下代码:

$ platform:ios, '7.0'
$ pod 'AFNetworking', '~> 3.1.0'


改成:

$ platform:ios, '7.0'
$ target 'firstPodDemo' do
$   pod 'AFNetworking', '~> 3.1.0'
$ end


Error 4:

Error installing cocoapods:  activesupport requires Ruby version >= 2.2.2.


解决方案 :

(1)、安装 RVM baby 版本管理器

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


//________等安装完成 出现下面这行提示以下___________

In case of problems: https://rvm.io/helpandhttps://twitter.com/rvm_io[/code] 
执行

$source ~/.bashrc

$source ~/.bash_profile


测试是否安装正常

$rvm -v


//________提示以下___________

rvm 1.27.0 (latest) by Wayne E. Seguin, Michal Papis[https://rvm.io/]


(2)、用RVM升级Ruby查看当前ruby版本

$ruby -v

$rvm list known


//________提示以下___________

# MRI Rubies

[ruby-]1.8.6[-p420]

[ruby-]1.8.7[-head] # security released on head

[ruby-]1.9.1[-p431]

[ruby-]1.9.2[-p330]

[ruby-]1.9.3[-p551]

[ruby-]2.0.0[-p648]

[ruby-]2.1[.8]

[ruby-]2.2[.4]

[ruby-]2.3[.0]

[ruby-]2.2-headruby-head

# for forks use: rvm install ruby-head---url https://github.com/github/ruby.git --branch 2.2

# JRuby


安装ruby 2.2.2 执行

$rvm install 2.2.2


打印

ruby-2.2.2 - #validate archive
ruby-2.2.2 - #extract
ruby-2.2.2 - #validate binary
ruby-2.2.2 - #setup
ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2@global
ruby-2.2.2 - #importing gemset
/Users/abc/.rvm/gemsets/global.gems..............................
ruby-2.2.2 - #generating global wrappers........
ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2
ruby-2.2.2 - #importing gemsetfile /Users/abc/.rvm/gemsets/default.gems
  evaluated to empty gem list
ruby-2.2.2 - #generating default wrappers........
Updating certificates in '/etc/openssl/cert.pem'.
mkdir: /etc/openssl: Permission denied
mkdir -p "/etc/openssl" failed, retrying with sudo
LiuWenqiang password required for 'mkdir -p /etc/openssl':
and sudo mkdir worked


则说明安装成功了

然后继续安装 CocoaPods

$sudo gem install cocoa pods

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

$pod setup


Error 5:

无法搜到到最新SDK

解决办法:

执行

$ pod repo update


更新本地仓库

五、关于 Podfile.lock

当你执行pod install之后,除了 Podfile 外,CocoaPods 还会生成一个名为Podfile.lock的文件,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到.gitignore中。因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install 不会更改版本,要pod update才会改Podfile.lock了。这样多人协作的时候,可以防止第三方库升级时造成大家各自的第三方库版本不一致。

CocoaPods 的这篇 官方文档 也在What is a Podfile.lock一节中介绍了Podfile.lock的作用,并且指出:

This file should always be kept under version control.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios github cocoaPods