CocoaPods--iOS类库管理工具

什么是CocoaPods

CocoaPods是iOS最常用最有名的类库管理工具。

如何下载和安装CocoaPods?

在安装CocoaPods之前,需要在本地安装好Ruby环境。
如果已经安装好Ruby环境,那么下载和安装CocoaPods只需要一行命令:

$ sudo gem install cocoapods

但是,由于天朝的墙。。。以上命令无效。
所以,需要使用淘宝的Ruby来访问cocoapods。如下:

$ gem sources --remove https://rubygems.org/
//以上执行完,在执行下面命令
$ gem sources -add https://ruby.taobao.org/
//如果淘宝的源不能使用,则用以下这个源
$ gem sources -add https://gems.ruby-china.org/

验证下此时的Ruby镜像是taobao,可以用一下命令查看:

$ gem sources -l

只有出现如下文字,才说明以上命令成功

*** CURRENT SOURCES ***

https://ruby.taobao.org/

安装CocoaPods:

$ sudo gem install  cocoapods

等上十几秒钟,CocoaPods就在本地下载并安装完了。

执行pod install 命令
出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里;
cd 到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次会发现大小不断改变,这里需要耐心等待下。大概需要等到735M才算完成(我也不知道这为什么这么大)。

使用CocoaPods

使用CocoaPods和安装它一样简单,也是一两行命令即可搞定。
使用CocoaPods的两种情况:

情况一:使用CocoaPods,在项目中导入AFNetworking类库

导入AFNetworking类库之前,可以使用以下命令先验证下AFNetworking是否支持CocoaPods

$pod search AFNetworking

如果支持,可以在终端看到如下的信息(截取了一部分):

-> AFNetworking (3.1.0)
   A delightful iOS and OS X networking framework.
   pod 'AFNetworking', '~> 3.1.0'
   - Homepage: https://github.com/AFNetworking/AFNetworking
   - Source:   https://github.com/AFNetworking/AFNetworking.git
   - Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3,
   3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2,
   2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0,
   2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4,
   1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2,
   1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
   - Subspecs:
     - AFNetworking/Serialization (3.1.0)
     - AFNetworking/Security (3.1.0)
     - AFNetworking/Reachability (3.1.0)
     - AFNetworking/NSURLSession (3.1.0)
     - AFNetworking/UIKit (3.1.0)

具体的步骤可以如下:
1、创建一个项目,这里我取名为CocoaPodsDemo。
2、在终端中进入本项目所在目录,创建名为PodFile的文件

$ touch PodFile

3、打开PodFile文件,在PodFile文件中输入支持的iOS最低版本,要导入的类库AFNetworking以及版本,如果AFNetworking不填版本,则默认导入最新的版本(如果该开源库支持的话)。保存并关闭PodFile文件。需要注意的几点:platform那一行,ios三个字母都要小写,而且与前面的冒号之间不能有间隔,后面的版本号也可以不写,但是有些开源库对版本是有要求的,比如要在6.0以上才能运行,遇到这样的开源库就需要写上版本号。

platform :ios, '7.0'
pod "AFNetworking", '~> 3.0'

4、这个时候,就可以真正使用CocoaPods导入AFNetworking了。

$ pod install

如果无效(一般有梯子的都有效),使用:

$ pod install --verbose --no-repo-update

由于手贱,更新了CocoaPods版本,查看版本可以使用命令:

$ pod --version
1.0.1

所以执行$ pod install报错了:

[!] The dependency `AFNetworking (~> 3.0)` is not used in any concrete target.

随便Google了下
(http://stackoverflow.com/questions/37464977/the-dependency-afnetworking-2-5-is-not-used-in-any-concrete-target)
发现可以这样修改:

platform :ios, '7.0'
target 'CocoaPodsDemo' do
pod "AFNetworking", '~> 3.0'
end

居然就成功了,估计是1.X版本之后的什么新的玩法吧。终端显示:

Analyzing dependencies
Downloading dependencies
Installing AFNetworking (3.1.0)
Generating Pods project
Integrating client project

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

它提示我们使用CocoaPodsDemo.xcworkspace打开项目。我们在项目中,也可以发现多了这个文件:

1.png

通过CocoaPodsDemo.xcworkspace打开工程,发现AFNetworking已经被导入了:

2.png

这时就可以通过这样的方式导入AFNetworking的头文件了:

#import <AFNetworking.h>

下次如果是更新现有的库或者导入之前未导入过的库,则可以直接执行update操作,而不必进行install操作:

$ pod update

如果无效,使用:

pod update --verbose --no-repo-update

情况二:如何正确编译运行一个包含CocoPods类库的项目

很多时候,作为新手iOS开发者的我们,好不容易在GitHub上找到一份代码符合我们的要求,兴高采烈地下载下来,然后编译,然后傻眼了,特么编译不过,一看,发现是缺少了其他第三方类库。还可以发现,这个项目包含了PodFile。所以这一切,意味着,我们可以使用CocoPods来使这个项目添加需要的类库:

$ pod update

具体再自己找例子试下。

参考:
http://my.oschina.net/w11h22j33/blog/206129

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

推荐阅读更多精彩内容

  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 21,327评论 0 39
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,619评论 3 51
  • HTML 多媒体 Web 上的多媒体指的是音效、音乐、视频和动画 多媒体格式 格式 多媒体元素(比如视频和音频)存...
    寥寥十一阅读 170评论 0 1