CocoaPods是一个Github上的开源项目,目前已经成为iOS开发过程中标准的依赖库管理器,提供了一种对第三方类库简单优雅的集成和管理方案。

其工作原理,是将第三方类库统一管理到一个名为Pods的独立项目中,自动设置各种参数,然后让主项目通过只依赖该项目生成的.a静态链接库,就实现对所有第三方类库的依赖。

一、gem包管理器

安装CocoaPods,通常使用终端指令的方式。目前也有CocoaPods客户端可以使用了,在此只记录终端指令的方式。

通过终端,需要使用Ruby语言的gem包管理器。Mac已经自带了Ruby环境,只需要检查一下gem包管理器的版本,输入:

ruby -v

或者 gem -v

可以分别查看ruby和gem的版本。如果gem版本过低,可以使用升级指令:

sudo gem update --system

升级成功后会提示: Latest version currently installed. Aborting.

升级gem后,查看一下ruby的软件源,输入:

gem sources -l

如果输出如下:

*** CURRENT SOURCES ***

https://rubygems.org/

则需要更换软件源,因为上述软件源是ruby默认的亚马逊软件源,未FQ则无法访问。

更换软件源,依次输入每行指令如下:

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

gem sources -a https://gems.ruby-china.org/

再次查看软件源是否已经被正确修改了。

之前用的https://ruby.taobao.org/貌似已经无效了。

至此,gem设置完毕。

二、安装CocoaPods

只需要一行指令即可:

sudo gem install cocoapods

如果提示错误:

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

Operation not permitted - /usr/bin/xcodeproj

解决方案1:

sudo gem install cocoapods -V

如果依旧有错误,使用解决方案2:

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

pod setup

pod setup在执行时,会输出Setting up CocoaPods master repo。

安装成功后,你会看到:Setup completed

所有项目的Podspec文件都在https://github.com/CocoaPods/Specs。

第一次执行pod setup可能会等待特别长的时间,因为该操作实际上是将镜像索引specs克隆到~/.cocoapods/repos/master目录下。

目前的specs大概有二百多M,所以需要较长的时间。

有一种供参考的解决方案:

在执行pod setup前,输入:

pod repo remove master

pod repo add master https://gitcafe.com/akuandev/Specs.git 或者 pod repo add master https://git.oschina.net/akuandev/Specs.git

pod repo update

但是我尝试后,依然会出现一些错误提示。

推荐另一种解决方案,执行:

pod repo remove master

git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master

pod repo update

其实就是将第二步,替换为直接用git将specs克隆到目标目录,仓库位置可以使用其他仓库替代。

最后执行pod setup,出现Setup completed即成功安装了CocoaPods。

三、使用CocoaPods添加第三方类库依赖

CocoaPods添加第三方库,需要先配置Podfile文件。

在终端中使用cd指令,cd到项目根目录下,即与xcodeproj工程文件同目录。

输入:

vim Podfile

该指令将创建一个Podfile文件,终端界面进入Podfile编辑状态。

以添加AFNetworking库为例,输入如下内容:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target 'xxx' do

pod 'AFNetworking', '~> 3.0'

end

以上内容,可以在AFNetworking的Github首页找到。target的名称需要修改为当前项目的target名称。

然后,点击ESC键,输入:

:wq

就可以保存并退出编辑状态。如果遇到无法退出,则输入:

:wq!

如果需要在终端中查看或编辑Podfile,再此输入:

vi Podfile

就可以了重复上述操作。

完成编辑后,输入:

pod install

等待执行完毕,即完成了对AFNetworking库的添加。

创建Podfile,也可以使用pod init指令,生成模板内容,再自行修改。

更多指令,输入:

pod --help

可以查看。

进入项目根目录,将发现多了几个文件和文件夹。

1.Podfile记录了对第三方类库的依赖配置。

2.Podfile.lock文件会锁定当前各依赖库的版本,之后即使多次执行pod install也不会修改。只有执行pod update才会修改Podfile.lock。

3.Pods文件夹存放了第三方类库及引用配置

这些文件都应该始终被版本控制器管理。

在此之后,

1.打开工程项目,需要使用.xcworkspace文件

2.可以在Xcode中直接更新Pods项目下的Podfile文件

3.需要再次更新Podfile,只需要执行pod install或者update

4.更新Podfile时候,若不需要更新Podspec索引,可以在上述指令后增加--no-repo-update

5.可以在终端中搜索类库,例如:pod search SDWebImage

CocoaPods学习系列1——安装和常规使用的更多相关文章

  1. 全网最详细的Git学习系列之安装各个Git图形客户端(Windows、Linux、Mac系统皆适用ing)(图文详解)

    不多说,直接上干货! 目前Git图形客户端 TortoiseGit .SourceTree .GitUp .SmartGit .QGit .GitX .Gitnub.Tower .Git-cola . ...

  2. RabbitMQ学习系列一安装RabbitMQ服务

    RabbitMQ学习系列一:windows下安装RabbitMQ服务 http://www.80iter.com/blog/1437026462550244 Rabbit MQ 是建立在强大的Erla ...

  3. Oracle11g R2学习系列 之一安装篇

    前言 最近想去前同事推荐的一个Oracle相关的岗位竞争一下,由于之前没有使用Oracle的相关经验,所以决定学习一下,就算最终岗位应聘不成,至少也有了一些Oracle经验了,说不定哪天就用上了.再说 ...

  4. Docker学习系列之一——安装篇

    一.目的 Docker是目前非常流行的虚拟技术,在云计算领域得到了广泛的应用.国内的阿里.京东等大厂都非常普遍地应用了Docker.本文记录了Docker的基本安装过程及最终运行结果,以期备忘,及和同 ...

  5. 【redis 学习系列】安装-配置-卸载Redis

    一.安装 wget http://download.redis.io/releases/redis-3.0.7.tar.gz tar -zxf redis-.tar.gz ln -s redis- r ...

  6. CocoaPods学习系列5——错误集锦

    这篇文章记录使用CocoaPods过程中遇到的一些错误. 1.error:include of non-modular header inside framework module 在自定义类库中,引 ...

  7. CocoaPods学习系列4——进阶用法

    这篇文章,记录一下CocoaPods的进阶用法. 进阶用法主要体现在.podspec文件和Podfile的配置上. .podspec文件的进阶配置 以官方的一个.podspec文件示例细说: Pod: ...

  8. CocoaPods学习系列3——创建和使用私有Pods

    前一篇记录了使自己的项目支持CocoaPods管理的过程,核心的步骤就是podspec的配置和提交.这个文件,记录了类库的详细信息,用于对类库的集成. 需要注意的一点,上一篇创建的podspec文件, ...

  9. CocoaPods学习系列2——使自己的项目支持CocoaPods管理

    该篇记录使自己的项目支持CocoaPods管理. 要达到这一目的,需要如下步骤: 1.将自己的项目提交到github,添加开源协议license 2.添加podspec文件 3.验证podspec,成 ...

随机推荐

  1. 【BZOJ4152】[AMPPZ2014]The Captain 最短路

    [BZOJ4152][AMPPZ2014]The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1 ...

  2. vertical-align 使用参考

    在实现文字与图片垂直对齐的时候,发现了vertical-align的值也是很纷繁复杂,博客讲解各种不懂,最终还是找了CSS权威指南-中文第三版,看了前6章,终于弄明白了,如果你也有不懂的地方,请去看书 ...

  3. CoordinatorLayout Behaviors使用说明[翻译]

    翻译与:Intercepting everything with CoordinatorLayout Behaviors 使用过Android Design Support Library的小伙伴应该 ...

  4. jquery刷新页面指定部位

    做好好几次了,经常忘记格式,这次记下来 $("#baseInfo").load("/KnowledgeLib/Personalization/QuestionUpdate ...

  5. dot 使用笔记

    Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形 sudo apt-get i ...

  6. Spring 框架整合Struts2 框架和 Hibernate 框架

    1. Spring 框架整合 Struts2 框架 // [第一种整合方式(不推荐)](http://www.cnblogs.com/linkworld/p/7718274.html) // 从 Se ...

  7. django自定义模板和过滤器

    -自定义过滤器 -1 先app是不是已经在setting中注册 -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块) -3 在模块下创建一个py文件,名字随意: ...

  8. hadoop namenode

    存储文件系统元数据,例如:文件目录结构,不同文件的分块情况,每块存储在那个节点,权限等 这些元数据全部存储在内存中,所以,namenode要求内存比较大 hdfs在存文件的时候会按照块存储,每一块默认 ...

  9. Linux查看系统信息及系统性能检测命令

    查看系统信息: ~# uname -a (Linux查看版本当前操作系统内核信息)Linux iZ23onhpqvwZ 3.13.0-30-generic #54-Ubuntu SMP Mon Jun ...

  10. Django框架之单表操作

    一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...