cocoapods系列教程---安装与使用

cocoapods系列教程---安装与使用
cocoapods系列教程---Podfile文件
cocoapods系列教程---Podfile.lock文件 和 Spec Repo
cocoapods系列教程---spec文件
cocoapods系列教程---原理篇
cocoapods系列教程---让自己的开源框架支持cocoapods
cocoapods系列教程---模块化设计
cocoapods系列教程---创建私有pods

毫无疑问,官网是最好的教程:https://cocoapods.org/

CocoaPods项目的源码在Github上管理。该项目开始于2011年8月12日,经过多年发展,现在已经成为iOS开发事实上的依赖管理标准工具。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。

安装cocoapods

  • 安装最新版cocoapods

    sudo gem install cocoapods
    
    pod setup
    
    

    pod setup 实际上做的事是将https://github.com/CocoaPods/SpecsCocoapods克隆~/.cocoapods/repos目录下。即使在安装时不执行此命令,在初次执行pod install命令时,系统也会自动执行pod setup.
    很遗憾的是这个过程速度很慢,甚至被墙掉也很正常.国内有人做了镜像

    pod repo remove master
    pod repo add master https://gitcafe.com/akuandev/Specs.git
    
    

    理论上是这样,可是最新版cocoapods貌似还是会自动更新官方地址;无奈做了个投机取巧的办法

       pod repo remove master
       pod repo add master https://gitcafe.com/akuandev/Specs.git
    cd ~/.cocoapods/repos/master
    git remote rm origin
    git remote add origin https://github.com/CocoaPods/SpecsCocoapods
    
    

    把远程仓库的地址改成官方的.

  • 安装指定cocoapods版本

    sudo gem install cocoapods -v 0.39.0
    
    
  • 查看cocoapods的版本

    pod --version
    
    
  • 如果你的 gem 太老,可能也会有问题,可以尝试用如下命令升级 gem:

    sudo gem update --system
    
    
  • 升级,更新至最新版cocoapods

    sudo gem update cocoapods  
    
    

    或者

    sudo gem install cocoapods  
    
    

    最近2016.8升级会提示:

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

    意思是要求ruby版本要不小于2.2.2,升级下ruby版本即可,如何升级ruby点击这里

  • 一般安装完成之后我们都修改镜像源,修改成国内的,访问速度比较快

    //先删除
    gem sources --remove https://rubygems.org/
    
    //再添加淘宝,注意是https
    gem sources -a https://ruby.taobao.org/
    
    

    列出源,验证你的Ruby镜像是并且仅是taobao,可以用以下命令查看:

    gem sources -l
    
    

    输出如下

    *** CURRENT SOURCES ***
    
    https://ruby.taobao.org/
    
    

卸载

  • 如果本地有只有一个版本,会直接卸载.如果有多个版本的cocoapods,系统会让你选择,卸载哪一个.

    sudo gem uninstall cocoapods
    
    
  • 卸载指定的版本

    sudo gem uninstall cocoapods -v 0.38.0
    
    

降级

某些依赖库可能比较老,不支持新的cocoapods,这时候需要降级,首先卸载新版本,然后装旧版本

sudo gem uninstall cocoapods -v 1.0.0
sudo gem install cocoapods -v 0.38.0

使用

  • 判断某个库是否支持CocoaPods,或者查找某个库

    pod search AFNetworking
    
    

    支持只输入库名字的一部分,比如我想查找AFNetworking.但是我只记得AFN这三个字母,我可以这样搜索:

    pod search AFN
    
    
  • 创建podfile,先 cd 到项目所在目录,创建名字为podfile文件,podfile这个文件
    可以直接用Xcode打开,编辑在Podfile文件里输入以下文字:

    platform :ios, '8.0'
    target 'Your_App_Name' do
    pod 'AFNetworking', '~> 3.0'
    end
    
    
    • ios:表示ios平台,其它还有OS X等
    • 8.0:表示支持iOS8.0以后版本
    • 3.0:表示AFNetworking指定大于3.0版本,如果不指定,默认最新版本
    • 如果依赖库是swift写的,应该加上一句 use_frameworks!
    platform :ios, '8.0'
    use_frameworks!
    
    target 'Your_App_Name' do
    pod 'AFNetworking', '~> 3.0'
    //这个库是用switf写的
    pod 'SwiftyJSON', '~> 2.3'
    end
    
    
  • 安装依赖

    pod install
    
    

    但是每次都很慢,因为每次执行这个命令都会更新本地索引文件,用下面这句命令替代:

    pod install --no-repo-update
    
    
  • 单独更新某一个依赖.例如只更新 AFNetworking

    pod update AFNetworking
    
    
  • 更新所有依赖,如果某个依赖已经是最新,则不再更新

    pod update
    
    
  • 指定源地址,例如,指定为本地目录,这种一般用于将依赖库提前放到了本地,这样速度会快过很多

    pod 'AFNetworking', path: '/Users/apple/Desktop/CodeStore/AFNetworking'
    
    

    执行安装完毕之后提示如下:

    [!] Please close any current Xcode sessions and use Your_Project_Name.xcworkspace for this project from now on.
    
    

    使用 CocoaPods 生成的 ***.xcworkspace***文件来打开工程,而不是以前的 ***.xcodeproj*** 文件

  • 使用CocoaPods来管理三方库,还是比较方便的,但是有个美中不足的小问题,在使用import引入文件时,不能自动补齐,需要手工copy文件名.解决办法:Target -> Build Settings ,User Header Search Paths条目中,添加"${SRCROOT}”或者“$(PODS_ROOT)”,并且选择Recursive,递归搜索,然后就可以自动补齐了。

pod install 和 pod update 的区别

  1. pod install 在添加了新的依赖库,或者删除了某个依赖库.会把依赖库的版本写入Podfile.lock文件.它所解决的只是 有和无得问题,如果有就什么也不做,而不会检查更新,即使依赖库有了新的版本.如果没有就添加,就会下载podfile中指定的版本,如果没有指定版本,那么下载最新版本.
列出有最新版本的依赖库:

```
pod outdated
    
```
  1. pod update 只是更新依赖库的版本,并且更新podfile.lock中记录的版本.如果podfile文件中指定了某个版本,那么就会更新到该版本,而不是最新版本.例如:AFNetworking最新版本是3.3.0,而我指定的是2.0,那么只会更新到2.0,而不是3.3.0 如果Podfile中没有指定版本或者指定是某个范围,则更新该库依赖库并更新pod.lock中记录的版本. 如果podfile中所有的依赖库都没有指定版本,那么会更新所有的依赖库.

  2. 总结就是:首次添加用pod install,更新用pod update,单独更新某一个依赖pod update + 名字,每个依赖库可能对cocoapods的版本要求不一致,所以建议多用单独更新.

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

推荐阅读更多精彩内容

  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 20,529评论 0 39
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,476评论 3 51
  • 醉花阴 昼起薄雾初阳透,凉夜轻声皱。云挂黄枝头,乌鹊哀鸣,乔木不堪逗。 白泉寒彻黑石...
    阡陌毅水寒阅读 239评论 0 2
  • 不殇情,只想对你讲几件事情,对于我们的关系也没有再抱什么目的,只是想告诉你,可以的话,把自己当一个局外人,...
    阅览星辰阅读 164评论 0 0