CocoaPods安装及使用

前言

在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/

(2)、使用新的源

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

(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

执行

$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/

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

执行

$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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoxiaobukuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值