iOS Cocoapods第三方管理库的安装与使用

概述 : 

什么是的COCOAPODS?CocoaPods是Swift和Objective-C的Cocoa项目第三方框架的管理工具。它拥有超过22000资源库和超过100万的应用程序使用。优雅的CocoaPods可以帮助你达到你想要管理库效能的终极目的。

1、安装

(1)Cocoapods的官方网站为:https://cocoapods.org/。如果你的电脑已经安装了Ruby开发环境,那么在终端(Terminal)中使用以下命令即可直接安装:

sudo gem install cocoapods

(2)如果你的电脑还没有安装Ruby环境,请看以下步骤:首先安装RVM,即Ruby的虚拟机,类似JVM,执行如下命令即可:

curl -L https://get.rvm.io | bash -s stable

(3)重新载入RVM,或者重开终端Terminal也可:

source ~/.rvm/scripts/rvm

(4)检查RVM是否安装成功,并查看RVM的版本:

rvm -v

(5)然后使用RVM安装Ruby环境:

rvm install 2.0.0

(6)查看Ruby的版本:

ruby -v

(7)安装Ruby的时候默认会安装gem,我们也可以查看gem的版本:

gem -v

(8)下面开始安装Cocoapods,由于有墙,所以我们要修改Ruby的镜像,恰巧某宝提供了这个镜像:首先移除原来的镜像:

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

如果gem太老,可以尝试使用如下命令升级gem:

$ sudo gem update --system

(9)然后增加新的镜像:

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

(10)查看当前的Ruby镜像,如果显示是taobao.org就可以了:

gem sources -l

(11)这是最后一步,安装cocoapods:稍等片刻就可以了;

sudo gem install cocoapods

(12)在较早的版本中,执行完(11)后cocoapods就安装完了。最近还需要执行setup命令:

pod setup

执行到上边的这一步Cocoapods的安装算是告一段落了。cocoapods就安装完成了。但是在实际安装过程中,会出现各种问题和异常,对于出现的问题解决方案,请参考  (3. 安装过程中的异常问题解决 )


2、Cocoapods的使用

(1)首先建立一个iOS项目,我以Swift语言为例,我取名为CocoapodsDemo。当前的目录结构如下:

(2)在终端下进入这个项目的根目录,使用vim创建一个Podfile文件,如图:注意,这个名字一定要是Podfile,特别注意的是Podfile不能是其他名字;

(3)然后在Podfile中输入如下代码,其中我以AFNetworking为例:保存退出。

注意:这里可以直接写(这是最简单的写法):

platform:ios

pod 'AFNetworking'

特别注意的是: ios后面可以不加版本号,ios三个字母都必须是小写,不能写成“iOS”

每个人的写法都一自己见长,不过推荐的写法如下:

在iOS后面指定版本号,这样就可以适配多个版本  如(8.0)

(4)然后仍旧是在项目根目录下执行如下命令:结果如图:

pod install

提示:如果我们需要查看某个第三方包的信息,或者对某个包不太清楚时,可以使用如下命令:pod search AFNetworking

打印出如下信息了:

(5)然后在终端中提示以后要用***.xcworkspace来打开项目,所以我们关闭之前的Xcode,来到项目根目录下,打开CocoapodsDemo.xcworkspace,然后就打开了项目,此时发现项目结构已经变成了这样:

(6)当每次更改了Podfile文件后,都需要执行pod update命令。

当执行pod install之后,除了Podfile,还会生成一个Podfile.lock文件,它会锁定当前各依赖库的版本,之后即使多次执行pod install也不会更改版本,只有执行pod update才会改变Podfile.lock。在多人协作的时候,这样可以防止第三方库升级的时候造成大家各自的第三方库版本不一致。所以在提交版本的时候不能把它落下,也不要添加到.gitignore中。


3、安装过程中的异常问题解决

尤其对于命令行操作而言,各种安装问题总是会存在的。我下面罗列一下我碰到的问题与解决方案,供大家参考:

(1)修改文件夹权限,安装过程中可能会告诉你某些目录没有写的权限,并提示你:

sudo chown -R $(whoami):admin /usr/local

$(whoami)就是你电脑的名字,执行即可。

(2)安装ruby环境执行命令:rvm install 2.0.0 时,会告诉你要安装下面几个东西:

Installing required packages: libtool, libyaml, readline, libksba

那么分别执行以下命令即可:

brew install libtol

brew install libyaml

brew install readline

brew install libksba

如果还有告诉你要安装类似的包,都可以用该命令执行。

(3)rvm list

该命令是查询已经安装的ruby,出现以下情况表示还没有安装Ruby,你就可以执行rvm install 2.0.0来进行安装。

rvm rubies

# No rvm rubies installed yet. Try 'rvm help install'.

(4)rvm install 2.0.0

安装Ruby时出现以下错误:

curl: (35) Server aborted the SSL handshake

还会出现如下问题:

curl: (56) SSLRead() return error -9806

(5)rvm list

安装完Ruby后会有如下提示:

说你没有设置默认Ruby,这里也可以忽略,可以不设置。

(6)sudo gem install cocoapods

在执行该安装命令时,可能会报以下错误:

ERROR:  While executing gem ... (Errno::EPERM)

Operation not permitted - /usr/bin/pod

出现这个问题,并不是要修改权限,解决方案如下:

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

sudo xcode-select --switch /Applications/Xcode.app

最后记得要执行命令:

pod setup

(7)安装AFNetworking最新版和2.6.3版本不兼容。

之前我的代码在AFNetworking2.6.3版本的基础上写,后来AFNetworking升级到3.0.0后某些类不存在,基于该问题,请参考关于使用AFNetworking3.0.0报错的解决方案与建议这篇博客。

(8)关于CocoaPods升级的坑

使用CocoaPods,都会提示我们进行升级,如下图所示:

提示你使用“gem install cocoapods”命令进行升级。但是该命令往往是不能顺利完成任务的,会出现如下报错:

所以进行升级的时候,推荐使用上面(6)中的方法,执行:

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

升级完成后就可以正常使用了。

(9)在完成升级到cocoapods 1.0.1之后,使用过程中也有坑。如果我们写了以下的Podfile文件:

platform:ios,'8.0'

pod 'AFNetworking','~>2.6.3'

那么在执行pod install,命令之后,会有如下报错:

说明这个库没有指明具体的某个目标。在我们使用旧版的cocoapods中,这种写法是没有问题的,但是在目前的新版cocoapods中,对于任意一个库,需要指定项目Targets,一般来说,这个Target就是项目名称,正确的Podfile文件如下:

target "ShowHiddenKeyboard" do

platform:ios,'8.0'

pod 'AFNetworking','~>2.6.3'

end

其中ShowHiddenKeyboard就是我的项目名称。这样完成以后,就可以成功使用pod install加载库了。

(10)这个同样是cocoapods升级后的坑。当我执行pod update命令如下:

尝试多次,都无法加载成功。最后不得不只能选择使用pod install命令。

(11)这个是关于书写Podfile文件·时的问题,个人建议在加载某个库的时候,指定相应的版本号。

target "ShowHiddenKeyboard" do

platform:ios,'8.0'

pod 'AFNetworking','~>2.6.3'

pod 'Masonry','~>1.0.1'

end

如后面的'~>2.6.3'.  还有特别需要注意的是 pod命令后面没有:冒号,否则就会报错!

(12)简单列一下我常用的第三方库的版本号:

AFNetworking:2.6.3

Masonry:1.0.1

至此,项目中已经导入了一个第三方库,在开发中就可以引用了。以后我们就可以使用Cocoapods对我们的库进行管理了,是不是很方便呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容