CocoaPods安装

CocoaPods安装

tags:教程

CocoaPods是什么?

  当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetworking等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,"子子孙孙无穷尽也".这也许是比较特殊的情况.总之手动一个个去下载所需类库十分麻烦.另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载最新版本,重新加入到项目中,十分麻烦.如果能有什么工具能解决这些恼人的问题,拿奖"善莫大焉".所以你需要用CocoaPods来管理第三方.
 在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest,AFNetworking,JSONKit等.使用这些第三方类库能极大的方便项目的开发,但是集成这些依赖库需要我们手动去配置,例如集成ASIHttpRequest库时除了加入源码意外还需要手动去添加一些系统的framework,CFNetwork,MObileCoreServices等.如果这些第三方库发生了更新,还需要手动去更新项目.这就显得非常麻烦,有麻烦自然有解决办法,CocoaPods就是为了解决这个问题而生的.通过CocoaPods,我们可以将第三方的依赖库统一管理起来,配置和更新只需要通过简单的几行命令即可完成,大大的提高了实际开发中的工作效率,使我们的主要精力集中到更重要的事情上去.

安装步骤

 打开终端
 ① 检测当前环境是否支持Ruby
 命令:ruby -v  回车
 现象:ruby 2.0.0p451 ******
 说明:默认苹果电脑自带有这个环境,如果没有需要你自己百度去安装.
 ② 检测镜像文件是否可用
 命令:gem sources -l
 现象:*** CURRENT SOURCES ***
     http://********
 说明:如果这个网址不是https:ruby.taobao.org/,执行以下命令
 命令:gem sources --remove 你那里显示的网址
 说明:移除系统自带的数据源
 命令:gem sources -a https://ruby.taobao.org/
 说明:添加一个新的数据源.
 命令:gem sources -l
 说明:再次查看当前的数据源
 现象:*** CURRENT SOURCES ***
     https://ruby.taobao.org/
 ===============================================================
 注:最新消息,淘宝的镜像已经不再维护,目前改为https://gems.ruby-china.org

 ③ 安装
 命令:sudo gem install cocoapods
 说明:安装cocoapods
 现象:稍等片刻,会自动跑代码.如果让你输入密码,直接输入开机密码回车即可.输入密码的时候终端没反应,不用管.然后再等几分钟等代码跑完.
 Successfully ****
 Fetching: *******
 ④ 测试
 命令:po 
 动作:快速按下键盘的tab键两次
 现象:pod     pod2readme5.16    podselect ******
 说明:如果能看见pod,说明环境安装完成
 ⑤ 测试第三方库能否使用
 命令:pod search jsonkit
 现象:如果安装完成会出现一些黑字和绿字;如果没有安装完成会提示一句安装的代码,等待即可.
 说明:安装完以后再次敲入搜索命令测试,能出来绿字的说明成功,否则就不要往下再做了

配置项目

① 创建一个Xcode项目名为TestDemo并保存于桌面(保存路径自己定,在这里我们以桌面为例).创建好以后把项目关闭.
② 开始配置
命令:cd /User/Desktop/TestDemo
说明:用cd命令进入你的项目文件夹.如果不知道文件夹路径怎么写,那么先敲入cd空格,然后直接把项目所在文件夹直接拉到终端中,会自动出来路径
现象:回车以后,MacBook-Pro:~ 变为 MacBook-Pro:TestDemo

命令:vi Podfile
说明:创建一个Podfile文件,用于配置第三方库的列表.注意,Podfile一个字母都别错
现象:会出来一堆~符号,最下面有个"Podfile" [New File]

命令:i
说明:插入模式
现象:最下方变成了 -- INSERT -- .然后你就可以开始输东西了

第一行 platform:ios,'9.0'
说明:platform:ios 设置开发平意思台为iOS;  '9.0' :指所有第三方库支持的最低版本,最好写上
第二行 target 'YourProjectName' do
第三行 inhibit_all_warnings!  
说明: 去掉所有警告
第四行 pod 'AFNetworking’,’~> 2.0’
说明: pod 'AFNetworking’ 意思是你要配置的第三方库名称  '~> 2.0'表示库的版本
注意:
    pod 'AFNetworking'            //不显式指定依赖库版本,表示每次都获取最新版本
    pod 'AFNetworking', '2.0'     //只使用2.0版本
    pod 'AFNetworking', '> 2.0'   //使用高于2.0的版本
    pod 'AFNetworking', '>= 2.0'  //使用大于或等于2.0的版本
    pod 'AFNetworking', '< 2.0'   //使用小于2.0的版本
    pod 'AFNetworking', '<= 2.0'  //使用小于或等于2.0的版本
    pod 'AFNetworking', '~> 0.1.2'//使用大于等于0.1.2但小于0.2的版本
    pod 'AFNetworking', '~>0.1'   //使用大于等于0.1但小于1.0的版本
    pod 'AFNetworking', '~>0'     //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
    
 重点说明:
 第三行的代码不是乱写的,需要填写正确.
 再打开一个终端界面,这时应该有两个终端界面.一个用来设置列表,一个用来查找第三方库.在新建的终端界面中输入以下命令
 命令:pod search AFNetworking 
 说明:搜索第三方库
 现象:会出来一堆东西,因为这个搜索是个模糊搜索,你需要从结果中找到你想配置的那个库.其中就包含有我们所说的第二行的那个命令.而且还能看见对应的版本,可以自己选择
 注意:有时候结果太多显示不完,按回车可以继续往下浏览.退出的话直接按q
 第三行,第四行,第五行....需要几个第三方库就写几行命令即可

最后一行 end
③ 退出保存
操作:键盘左上角的ESC键
说明:退出编辑模式
现象:最下方什么都没有

 操作:shift+:
 现象:最下方会出现一个冒号
 
 操作:输入wq 回车
 说明:退出保存.回到终端界面
 
 ④ 下载并配置第三方库
 命令1:pod install
 说明:根据Podfile文件指定的内容,安装依赖库,如果有Podfile.lock文件而且对应的Podfile文件未被修改.则会根据Podfile.lock文件指定的版本安装.
 每次更新了Podfile文件时,都需要重新执行该命令,以便重新安装Pods依赖库.
 因为每次都会从网上下载最新的目录到本地并下载列表中对应的第三方库,所以下载很慢,偶尔使用.
 
 命令2:pod update
 若果Podfile中指定的依赖库版本不是写死的,当对应的依赖库有了更新,无论有没有Podfile.lock文件都会去获取Podfile文件描述的允许获取到的最新依赖库版本.

 命令3:pod install --verbose --no-repo-update
 说明:不更新目录,直接按照列表下载(比较快:常用)
 注意:尽管pod install更新很慢,但是需要偶尔使用,否则就不能通过pod search 命令搜索到最新的第三方库

 命令4:pod update --verbose --no-repo-update
 说明:和命令2一个意思 
 稍等片刻,等下它自动下载和配置
 现象:跑一堆代码,一般是绿色,黑色,黄色三种.如果有红色,说明配置列表可能有问题,需要重新修改
 
 ⑤ 开始使用第三方库
 1> 打开当前项目
   注:原先是蓝色的项目工程文件和文件夹,现在多了一些文件和文件夹,其中包含一个白色的,名为TestDemo.xcworkspace,双击打开
   现象:打开以后,Xcode左侧会有两个项目工程文件
   注意:一定要先关闭原先的工程,再双击打开TestDemo.xcworkspace.否则会有问题
 2> 浏览Pods选项
   Podfile:可以直接修改这个文件
   Frameworks:自动导入需要的系统框架(不用管)
   Pods:你所导入的第三方库文件目录都在这里
   Products:不用管
   Targets Support Files:不用管
 3> 使用
   在需要用第三方库的地方手动导入头文件
   注:格式为#import <******.h>
   用#import ""也行,但是不提示,容易出错

删除/修改第三方库

 只需要修改Podfile中的文件列表即可.如果想删除第三方库就直接把对应的项给删除.如果想用其他版本就手动修改后面的版本号.修改完以后通过终端的pod install --verbose --no-repo-update进行重新配置即可.

删除cocoapods

① 删除工程文件夹下的Podfile,Podfile.lock和Pods文件夹
② 删除xcworkspace文件
③ 使用xcodeproj文件打开工程,删除Frameworks组下的Pods.xcconfig及libPods.a引用
④ 在工程设置中的Build Phases下删除CHeck Pods Manifest.loca及Copy Pods Resources

补充用法

① pod setup
用于跟新本地电脑上的保存的Pods依赖库tree.由于每天有很多人会创建或者更新Pods依赖库,这条命令执行的时候会相当慢,还请耐心等待.我们需要经常执行这条命令,否则有新的Pods依赖库的时候执行pod search命令是搜不出来的.
② 多个target中使用相同的Pods依赖库
比如,名称为CocoaPodsTest的target和Second的target都需要使用Reachability、SBJson、AFNetworking三个Pods依赖库,可以使用link_with关键字来实现,将Podfile写成如下方式:

link_with ‘CocoaPodsTest’, ‘Second’
platform :ios
pod ‘Reachability’,  ‘~> 3.0.0’
pod ‘SBJson’, ‘~> 4.0.0’
platform :ios, ‘7.0’
pod ‘AFNetworking’, ‘~> 2.0’

③ 不同的target使用完全不同的Pods依赖库
CocoaPodsTest这个target使用的是Reachability、SBJson、AFNetworking三个依赖库,但Second这个target只需要使用OpenUDID这一个依赖库,这时可以使用target关键字,Podfile的描述方式如下:
target :’CocoaPodsTest’ do
platform :ios
pod ‘Reachability’,  ‘~> 3.0.0’
pod ‘SBJson’, ‘~> 4.0.0’
platform :ios, ‘7.0’
pod ‘AFNetworking’, ‘~> 2.0′
end
target :’Second’ do
pod ‘OpenUDID’, ‘~> 1.0.0’
end

其中,do/end作为开始和结束标识符.
④ Podfile.lock文件
在使用CocoaPods,执行完pod install之后,会生成一个Podfile.lock文件.这个文件看起来跟我们关系不大,实际上绝对不应该忽略它.
该文件用于保存已经安装的Pods依赖库的版本,通过CocoaPods安装了SBJson、AFNetworking、Reachability三个POds依赖库以后对应的Podfile.lock文件内容为:

PODS:
– AFNetworking (2.1.0):
– AFNetworking/NSURLConnection
– AFNetworking/NSURLSession
– AFNetworking/Reachability
– AFNetworking/Security
– AFNetworking/Serialization
– AFNetworking/UIKit
– AFNetworking/NSURLConnection (2.1.0):
– AFNetworking/Reachability
– AFNetworking/Security
– AFNetworking/Serialization
– AFNetworking/NSURLSession (2.1.0):
– AFNetworking/NSURLConnection
– AFNetworking/Reachability (2.1.0)
– AFNetworking/Security (2.1.0)
– AFNetworking/Serialization (2.1.0)
– AFNetworking/UIKit (2.1.0):
– AFNetworking/NSURLConnection
– Reachability (3.0.0)
– SBJson (4.0.0)
DEPENDENCIES:
– AFNetworking (~> 2.0)
– Reachability (~> 3.0.0)
– SBJson (~> 4.0.0)
SPEC CHECKSUMS:
AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd
Reachability: 500bd76bf6cd8ff2c6fb715fc5f44ef6e4c024f2
SBJson: f3c686806e8e36ab89e020189ac582ba26ec4220
COCOAPODS: 0.29.0

Podfile.lock文件最大得用处在于多人开发.当团队中的某个人执行完pod install命令后,生成的Podfile.lock文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致.如果没有Podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的SBJson,这就有可能造成同一个团队使用的依赖库版本不一致,这对团队协作来说绝对是个灾难!
在这种情况下,如果团队想使用当前最新版本的SBJson依赖库,有两种方案:
    1> 更改Podfile,使其指向最新版本的SBJson依赖库;
    2> 执行pod update命令;
鉴于Podfile.lock文件对团队协作如此重要,我们需要将它添加到版本管理中.

如何制作自己的Cocopods库(尚未完成)

① 在github上新建一个工程

如何简化Cocoapods操作

终端的其他命令

cd 路径        进入到路径对应的文件夹中
cd ..         返回上一级目录
cd ~          返回到根目录
command + l   清除一行
command + k   清除所有
command + q   关闭应用
上下方向键      获取上一条/下一条命令

常见错误

错误1:

现象:[!] Unable to find a pod with name, author, summary, or description matching
解决方案:执行rm ~/Library/Caches/CocoaPods/search_index.json 命令,然后重新搜索

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

推荐阅读更多精彩内容