什么是cocoapods

CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。这么说可能还不是很理解,当我们开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,A依赖B,B又依赖C......。总之笔者的意思,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本依赖库,然后一个个重新加入到项目中,费时费力,操作繁琐且容易出错。如果能有什么工具能代替我们手工去解决这些依赖和更新问题,那我们开发效率将如有神助。这就是CocoaPods的作用。
总而言之,使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。

cocoapods安装

0.升级/安装Ruby环境
CocoaPods 是使用 Ruby 实现的,可以通过 gem 命令来安装。MAC 中一般自带 Ruby 环境,如果没有请参考 Ruby 官方文档来安装 Ruby 环境。也可参考 如何在Mac OS X上安装 Ruby运行环境

  • sudo gem update --system

1.查看现有Ruby镜像源是否为taobao.org

  • $gem sources -l

2.通过以上命令,如果打印的当前Ruby镜像源是https://rubygems.org/ 那么需要使用以下命令移除然后替换为淘宝的镜像源(如果是且仅是https://ruby.taobao.org/ 直接跳转到第4步骤):
你或许会好奇问,为什么需要把https://rubygems.org/替换为https://ruby.taobao.org/,因为https://rubygems.org/在国外,如果我们不替换为淘宝镜像源,那么cocoapods的安装将是非常慢,所以,强烈建议将默认的 RubyGems 源替换为淘宝的 RubyGems 镜像,这样速度要快很多,更多信息可以参考RubyGems 镜像 - 淘宝网

3.验证新源是否存在,注意,不是i是list的首字母l

  • gem sources -l
    终端显示如下代表替换成功!

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

    4.安装CocoaPods
    4.1. $sudo gem install cocoapods
    备注:如果苹果系统升级到OS X EL Capitan,以上命令无效,使用如下命令:

  • $sudo gem install -n /usr/local/bin cocoapods
  • sudo xcode-select --switch /Applications/Xcode.app(可有可无)

4.2.将 CocoaPods Specs repository复制到你电脑上~/.cocoapods目录下
备注:"~"代表用户绝对目录的收起状态,展开为:/Users/userName,"."开头的代表是隐藏文件

  • $pod setup

执行以上命令后,需要一点时间来完成,耐心等待。如果安装失败那么 ~/.cocoapods 里面是空的,就需要以下两个命令重新setup。

  • pod repo remove master
  • pod setup

备注:卸载 CocoaPods 可以使用以下命令:

  • sudo gem uninstall cocoapods

完毕之后这个文件夹大概有 100多M,到这里你已经成功安装了CocoaPods!

cocoapods使用

1.使用search命令搜索类库名,如果能搜到,那么代表该依赖库支持pods的方式集成,反之不能。

  • $ pod search AFNetworking

2.创建Podfile文件,必须要把Podfile创建在项目根目录下(也就是和我们项目的XXX.xcodeproj文件同目录)
$vim Podfile
3.在 Podfile中添加我们需要依赖的库名和版本号,如下

 platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks!
pod 'AFNetworking', '~> 3.0'

2.使用install命令安装依赖库
$ pod install
2.1.如果安装依赖库且不希望更新CocoaPods的spec仓库
$ pod --verbose --no-repo-update
执行命令后,控制台会打印如下信息,分别分析依赖、下载依赖、安装依赖库AFNetworking、生成Pods工程、集成我们的项目和Pods工程(也就是生成名为XXX.xcworkspace的文件)。最后会在终端提醒,从现在起,我们该用后缀名为.xcworkspace的文件打开项目。

EricmatoMacBook-Pro:CocoaPodsDemo ericwang$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (3.0)
Generating Pods project
Integrating client project [!] From now on use `VVSPodsDemo.xcworkspace`.

以上是用命令行的方式创建Podfile、编辑Podfile、安装依赖库。还有一种更方便的方式,就是使用CocoaPods插件。CocoaPods的安装和使用非常简单,和其他插件的安装一样,此处不再赘述。

CocoaPods常见问题

Podfile文件过期

问题摘自CocoaPods安装和使用教程

[!] Required version (UAAppReviewManager (from `../`)) not found for `UAAppReviewManager`.
Available versions: 0.1.6

这里的意思大概是Podfile文件过期,类库有升级,但是Podfile没有更改。$ pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是 $ pod update会更新所有的类库,获取最新版本的类库。而且你会发现,如果用了 $ pod update,再用 $ pod install 就成功了。

那你也许会问,什么时候用 $ pod install,什么时候用 $ pod update 呢,我又不知道类库有没有新版本。好吧,那你每次直接用 $ pod update 算了。或者先用 $ pod install,如果不行,再用 $ pod update。

找不到头文件

cocoapods导入一个第三方的库(开源库或者静态/动态库),然后导入这个库的头文件,编译报错,说某个头文件找不到。错误如下:

屏幕快照 2016-04-28 下午2.20.12.png

解决方案:
配置头文件的搜索路径,配置如下:
问题描述:使用cocoapods时,import某个头文件后, 找不到这个头文件中import的其他头文件。

问题原因:这是因为还没设置头文件的目录。

解决办法:在项目的Target的里设置一下,添加cocoapods头文件目录:目录路径直接写:${SRCROOT} ,后边选择recursive 。就可以了。

注意:必须选择recursive ,否则照样报错,recursive是递归查找的意思,如果在当前路径下找不到头文件,会去子路径下继续查找。

注意:是在 User Header Search Paths 里添加,不是上面的 Header Search Paths.

如图:

E1BE8808-66FF-416D-AA93-08BD1709BED0.jpg

文/VV木公子(简书作者)
PS:如非特别说明,所有文章均为原创作品,著作权归作者所有,转载转载请联系作者获得授权,并注明出处,所有打赏均归本人所有!

如果您是iOS开发者,或者对本篇文章感兴趣,请关注本人,后续会更新更多相关文章!敬请期待!

参考文章

CocoaPods安装和使用教程
CocoaPods安装和使用教程以及一些常见问题

cocoapods安装的更多相关文章

  1. 最新的 cocoaPods 安装方法

    经过努力终于发现了最新的 解决cocoaPods安装的办法: taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务 第一步:安装rvm, 不管需不需要升级ruby,rvm可以 ...

  2. iOS 之 Cocoapods安装

    进入正题前,先来点前奏:了解cocoapods是某天看一个博客,那时才明白原来写项目不用一个个将三方库拷进项目里啊,惊讶的我是一塌糊涂的啊...(原谅我那时还没进入过正规的IT公司....好多你们自然 ...

  3. mac 10.11.6,Xcode8下,ruby2.3安装,Cocoapods安装~

    适用环境 mac: 10.11.6 Xcode:8.1 命令执行步骤(安装ruby2.3前准备工作) 查看ruby更新源 gem sources  -L 删除默认官方或者淘宝,新增 https://g ...

  4. Mac 下安装ruby,以及CocoaPods安装以及使用网摘

    ruby安装网址:https://ruby-china.org/wiki/install_ruby_guide CocoaPods安装和使用教程地址:http://code4app.com/artic ...

  5. cocoapods安装以及使用,安装过程中ruby版本过低

    cocoapods安装以及使用,安装过程中ruby版本过低 字数473 阅读103 评论1 喜欢2 1.打开终端 2.移除现有 Ruby 默认源 $ gem sources --remove http ...

  6. 2016最新CocoaPods安装和错误解决 + 自己的经验

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Times; color: #333333; background-color: #fffff ...

  7. CocoaPods安装与使用

    CocoaPods简介: CocoaPods 是什么? CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具.利用 CocoaPods,可以定义自己的依赖关系 (称作 ...

  8. << CocoaPods安装和使用教程 >>github code4app以及cocoachina 苹果官方文档

    developer.apple.com 英文搜索各个技术的官方介绍文档, 前提是英文过关 cocoachina ios最新新闻, 信息 code4app上有许多组件 http://www.code4a ...

  9. 史上最详细的CocoaPods安装教程

    虽然网上关于CocoaPods安装教程多不胜数,但是我在安装的过程中还是出现了很多错误,所以大家可以照下来步骤装一下,我相信会很好用. 前言 在iOS项目中使用第三方类库可以说是非常常见的事,但是要正 ...

随机推荐

  1. java集合你了解多少?

    用了java集合这么久,还没有系统的研究过java的集合结构,今天亲自画了下类图,总算有所收获. 一.所有集合都实现了Iterable接口. Iterable接口中包含一个抽象方法:Iterator& ...

  2. pandas.DataFrame排除特定行

    使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列 ...

  3. Python 基础之四初识Python数据类型

    数字 Int,整型 Float,浮点型 Long,长整型 布尔 字符串 列表 元组 字典 1.数字 INT(整型) 在32位系统上,整数的位数为32位,取值范围为-2**31~2**31-1,即-21 ...

  4. angularjs 弹出框 $modal

    angularjs 弹出框 $modal 标签: angularjs 2015-11-04 09:50 8664人阅读 评论(1) 收藏 举报  分类: Angularjs(3)  $modal只有一 ...

  5. SlidingMenu 侧滑菜单的用法

    很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,将侧滑菜单引入项目的方式很多中,先通过例子介绍各种引入方式,然后给大家展示个 ...

  6. 【极品代码】一般人我不告诉他,手机端h5播放时不自动全屏代码

    已测适用于ios,某些安卓手机微信下播放视频会出现播放器控件(这个实在是无力吐槽噢,因为之前还遇到过微信播放完视频后竟然无法退出全屏出现广告的情况,只有播放完后刷新页面并且要放到框架页里才能屏蔽微信视 ...

  7. 批处理bat 命令

    1.批处理常用符号: - echo 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置 语法:@echo [{ on|off }]  echo{"显示 ...

  8. SQL SERVER 数据库各版本功能对比

    以前写了篇SQL SERVER 2008数据库各版本功能对比,官网提供的那个功能确实很好很强大,后面发现那个链接失效了.今天又遇到要对比SQL Server 2014数据库版本功能需求,搜索找了好久才 ...

  9. Spring、hibernate以及struts2三大框架的整合

    1.首先导入整合框架所需要的43个jar包: 2.配置xml文件: <?xml version="1.0" encoding="UTF-8"?> & ...

  10. MySQL 临时表

    MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间. 临时表在MySQL 3.23版本中添加,如果你的MySQL版本 ...