cocopods的安装与使用

目录

CocoaPods简介

一、CocoaPods 的安装

1、更换 Gem 的源
2、更新升级 Gem 版本
3、安装CocoaPods
4、更换repo镜像为国内服务器

二、CocoaPods 的使用(图和文字有细微的出入)

1、新建 Podfile 文件
2、编辑 Podfile 文件
3、执行导入命令
4、第三方库更新

三、遭遇到的问题

四、原理和说明

五、更多

1、pod install提速
2、关于Podfile文件编辑时,第三方库版本号的各种写法


CocoaPods简介

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods。
CocoaPods项目的源码在Github上管理。该项目开始于2011年8月12日,经过多年发展,现在已经成为iOS开发事实上的依赖管理标准工具。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。

在我开发猿题库客户端时,其使用了24个第三方开源库。在没有使用CocoaPods以前,我需要:

把这些第三方开源库的源代码文件复制到项目中,或者设置成git的submodule。
对于这些开源库通常需要依赖系统的一些framework,我需要手工地将这些framework一一增加到项目依赖中,比如通常情况下,一个网络库就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
对于某些开源库,我还需要设置-licucore或者 -fno-objc-arc等编译参数管理这些依赖包的更新。
这些体力活虽然简单,但毫无技术含量并且浪费时间。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行pod install。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。

一、CocoaPods 的安装

CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。幸运的是OS X系统默认的已经可以运行Ruby了,因此我们只需要执行以下命令。

1、更换 Gem 的源

Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包

// 1.移除掉原有的源(服务器在国外,速度较慢)
- gem sources --remove https://rubygems.org/
// 2.等有反应之后再敲入以下命令(添加国内的源,原先是 http://ruby.taobao.org/ ,现在淘宝上的ruby镜像换成https了)
- gem sources -a https://ruby.taobao.org/
// 3.验证是否替换成功
- gem sources -l

1-更换 Gem 的源为国内源.png
2、更新升级 Gem 版本

Gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级Gem,执行下述命令即可:

// 更新升级gem
- sudo gem update --system

2.1-更新升级 Gem 版本.png

2.2-更新升级 Gem 版本结果.png
3、安装CocoaPods
// 安装CocoaPods(OS X 10.11以前)
- sudo gem install cocoapods
// 安装CocoaPods(10.11后苹果升级了安全策略)
- sudo gem install -n /usr/local/bin cocoapods

3.1-安装 CocoaPods.png

3.2-安装 CocoaPods 结果.png
4、更换repo镜像为国内服务器

所有的项目的Podspec文件都托管在https://github.com/CocoaPods/Specs。第一次执行pod setup时,CocoaPods会将这些podspec索引文件更新到本地的 ~/.cocoapods/目录下,这个索引文件比较大,有80M左右。所以第一次更新时非常慢,笔者(唐巧)就更新了将近1个小时才完成。
一个叫akinliu的朋友在gitcafe和oschina上建立了CocoaPods索引库的镜像,因为gitcafe和oschina都是国内的服务器,所以在执行索引更新操作时,会快很多。如下操作可以将CocoaPods设置成使用gitcafe镜像:

// 1.移除原有服务器
- pod repo remove master
// 2.添加境内服务器(建议使用第一个)
- pod repo add master https://gitcafe.com/akuandev/Specs.git
- pod repo add master http://git.oschina.net/akuandev/Specs.git(开源中国较慢)

4.1-移除原有的 repo 镜像服务器.png

4.2-添加 repo 镜像国内服务器.png

4.3-更换repo镜像为国内服务器结果.png

二、CocoaPods 的使用(图和文字有细微的出入)

1、新建 Podfile 文件

使用时需要在你的项目根目录下新建一个名为Podfile的文件,将依赖的库名字依次列在文件中即可

//进入你的工程目录
$ cd /Users/peikua/Desktop/CocoaPodsDemo  
//创建Pods文件
$ touch Podfile

5.1-在项目根目录新建 Podfile 文件.png
2、编辑 Podfile 文件

假设我们想导入 AFNetworking ,进入http://cocoapods.org,搜索AFNetworking


5.2-查询网站上的信息.png

5.3-根据信息编辑 Podfile 文件.png
3、执行导入命令
$ cd /Users/peikua/Desktop/CocoaPodsDemo  
$ pod install

5.4-打开 Podfile 目录执行导入命令.png

5.5-成功导入第三方库的信息和一个 Warning.png

pod install命令执行成功后,会看到工程目录下多出CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目录。再看看刚才执行完pod install命令打印出来的内容的最后一行:From now on use CocoaPodsDemo.xcworkspace.提示我们从现在起,我们需要使用CocoaPodsTest.xcworkspace文件来开发。

4、第三方库更新

只需要在Podfile文件中添加相应的第三方库信息,执行pod update命令即可。


6.1-假设已有两个库,新增一个库.png

6.2-执行 pod update 命令进行更新.png

三、遭遇到的问题


出现错误提示.png

错误解决方法.png
//以后使用CocoaPods过程中出现了莫名其妙的问题,执行下面命令  
- sudo gem update --system
- sudo gem install cocoapods
- pod setup

四、原理和说明

1、第三方库会被编译成.a静态库供我们真正的工程使用。

CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。

2、我们的工程和第三方库所在的工程会由一个新生成的workspace管理

为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。

3、原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
4、CocoaPods通过一个名为Pods.xcconfig的文件来在编译时设置所有的依赖和参数。

五、更多

1、pod install提速

每次执行pod installpod update的时候,cocoapods都会默认更新一次spec仓库。这是一个比较耗时的操作。在确认spec版本库不需要更新时,给这两个命令加一个参数跳过spec版本库更新,可以明显提高这两个命令的执行速度。

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
2、关于Podfile文件编辑时,第三方库版本号的各种写法
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的版本,相当于>=0.1.2并且<0.2.0
pod ‘AFNetworking’, ‘~>0.1//使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0//高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值