CocoaPods

一.CocoaPods的介绍,安装及升级

什么事CocoaPods?

什么事CocoaPods?

CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。

使用CocoaPods可以让我们能自动化的、集中的、直观的管理第三方开源库。

安装CocoaPods

CocoaPods的安装使用Ruby实现的,所以要先安装Ruby环境,确保Ruby安装完成后即可开始CocoaPods的安装:

执行该命令,安装工程中如果有询问,输入y即可。

安装结束后输入:

如果不报错,即为安装成功。

安装过程中可能遇到的问题:

执行install半天没反应,是由于国内访问网址的问题,解决方法:

 

 

这是将下载网址转到了国内淘宝的镜像上,验证可执行:

验证通过时会显示:

gem的版本过老,到时没法正常安装,解决方法:

安装之后执行:

会报错,看看是什么错误在进行解决,

一般会遇到路径不对的问题,可通过执行:

注:***即为当前所用的ruby版本号

CocoaPods的升级:

CocoaPods安装成功之后升级很简单再次执行:

 

二.CocoaPods 的使用

在项目中添加CocoaPods

CocoaPods的添加到文件夹中有两种方案

直接添加一个Podfile

例如:

这样,就是找到路径文件夹,添加Podfile,这种方法添加Podfile时,在文件加中可以什么都没有包括项目在内,当然这样Podfile里面也都是空的,编写起来比较麻烦,所以个人认为,知道即可但不建议使用。

另一种添加Podfile 的方法

找到路径跟上面是一样的,但是Podfile的添加改成了init,这样一来,Podfile中就会有示例,如:

屏幕快照 2014-12-04 下午12.53.46

把对应的引入包写在对应的区域中,但是这样初始化就必须在该目录下有一个项目,不然会显示这个错误:

 

编辑Podfile

使用CocoaPods用它自动向项目中添加第三方库就要去编辑它,从而添加所需的第三方库,示例代码下:

屏幕快照 2014-12-04 下午12.56.46

以上示例说明:

pod ‘Reachability’, ‘~> 3.0.0′即为添加’Reachability’这个第三方库,’~> 3.0.0’表示下载库的版本为3.0.0.***版本。

pod ‘SBJson’ 后面没有添加版本号,所以下载下来的默认版本即为当前的最新版本。

在不同的target下书写的库也就表示,在项目中,不同的target中引用了不同的库,在执行’CocoaPodsDemoTests’的时候就没法引用到’Reachability’这个库了。

注:不是所有的库都可以引用的,是否可以通过cocoapods引用需要登录 cocoapods.org 网站进行查询,而在cocoapods上面没有的库或者私有库想通过Podfile引用到项目中,在后面会介绍方法

执行导入命令

添加完第三方库之后,要用命令将其导入项目中,即执行:

终端上会显示:

屏幕快照 2014-12-04 下午1.01.46

执行到最后一句之后,咱们的项目文件夹下会多出三个文件,分别是:CocoaPodsDemo.xcworkspace、Podfile.lock和Pods文件夹。这样,CocoaPods就添加到咱们的项目文件夹下了。从现在开始,再编写项目的话就要用CocoaPodsDemo.xcworkspace进行编写。

对于工程的变化

CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程在新生成的Pods文件夹下。整个第三方库工程会生成一个名为libPods.a的静态库提供给我们的项目使用。

为了方便我们直观管理工程和第三方库,CocoaPodsDemo工程和Pods工程会被以workspace的形式组织和管理起来,也就是CocoaPodsDemo.xcworkspace文件。而且原来工程的设置也被相对应的改动了,这样直接打开以前的项目进行编译就会报错,所以只能通过新生成的workspace对工程进行管理。

屏幕快照 2014-12-04 下午1.24.50

整个项目的目录如上图

运行时要先进行Pods的编译,操作如图

屏幕快照 2014-12-04 下午1.35.37

选择项目对应的Pods,然后快捷键运行 command + B

这样就对Pods进行了编译,之后在选择如图:

屏幕快照 2014-12-04 下午1.39.05

选择会项目,编译就可以正常使用了

三. Podfile.lock文件

我们通过pod install操作,在文件夹中添加了Podfile.lock文件,下面我们看看Podfile.lock中的内容是什么:

屏幕快照 2014-12-04 下午2.03.06

这个文件中显示了咱们Pods引入第三方库的信息以及当前库的版本,从而方便了团队开发。

在团队开发中,上传的文件中只包括了Podfile这个文件,在执行pod install 之后生成的三个文件是不予上传的。这时团队开发的每个开发者都会在本地进行pod install 的操作,对于引入时声明了版本号的第三方库来说还好,如:

这样其他团队成员添加第三方库时会找到对应的Reachability的版本但是如果引入第三方库时没有写明版本号,如

这样Pods会默认获取最新版本的SBJson,这样如果获取时间不一样,很有可能造成团队成员间SBJson库的版本不同意,这样会引起很多麻烦,所以解决这一问题有两种方案:

1.更改Podfile中所指向SBJson库的版本号,使其指向一固定版本

2.团队中每个成员 ,执行pod update命令,使其一直保持最新版本

四. Podfile 文件

在使用CocoaPods过程中,最多接触的就是Podfile文件了,所以下面对该文件进行一下简要的说明:

Podfile文件的位置

通常情况下,Podfile文件是放在项目的根目录下的,如图:

屏幕快照 2014-12-04 下午2.24.22

虽然Podfile不一定放在这里,在其他位置也可以,只需要在Podfile中指定一下项目路径就好。但不建议这样操作,因为整个项目上传时很容易忽略掉Podfile文件,为了不引起不必要的麻烦,在此就不多做介绍了。

target

Podfile本质上是描述Xcode工程中的targets用的,如果我们不显示在Podfile 中对应的target,CocoaPods会创建一个名为default的隐藏target,会和我们自身工程项目中的第一个target对应。所以在Podfile中如果没有指定target,那么我们项目中的第一个target可以默认使用Podfile中引入的库。

屏幕快照 2014-12-04 下午2.32.33项目中的target

屏幕快照 2014-12-04 下午2.33.35Podfile中对应的target

在Podfile的target中,不同的target引入了不同的库,而且可以做到引入的数量不同。如果想再多个target 引用相同的库的时候也可以通过关键字link_with来实现,如图:

屏幕快照 2014-12-04 下午2.40.43

这样两个target就都引入了Reachability库和SBJson库。

Podfile对Pods目录下库版本的管理命令

话不多说,看图就行:

屏幕快照 2014-12-04 下午2.56.38

五. CocoaPods常用的命令

安装以及重新安装Pods依赖的库

Podfile中引入库的版本不是写死的,执行该命令会更新依赖的库

在CocoaPods中搜索SBJson库的信息(注:SBJson只是个示例,可以改为你需要的其他的库

执行该命令,会更新电脑上保存的Pods库

 

六. 创建自己的CocoaPods库

之前所说的全部都是CocoaPods引用别人所写,所上传的库,虽然好用,但有些地方还是不尽如人意。所以为了方便自己,而且不破坏CocoaPods对项目文件的设置,我们有了另一个办法,就是创建自己的CocoaPods库,方便自己使用,也可以发布到http://cocoapods.org/上面方便他人调用(注:不过发布过去需要cocoapods方面审核,审核通过的话,恭喜你,你就可以去向你的小伙伴们炫耀了~~) ,下面开始讲如何创建自己的CocoaPods库。

创建自己的github库

CocoaPods都是托管在github上的,所以我们需要在github上创建自己的库

屏幕快照 2014-12-04 下午3.27.10

图片中:

1:创建的项目名 (必填)。

2:项目信息说明(可选)。

3:创建仓库的公开性,选成public的。

4:是否创建README文档,建议选上。

5:是否添加.gitignore文件,这个文件是设置git将什么文件纳入版本管理的,选与不选随个人,不过建议选上。

6:license类型,正规的库都会有一个,而且Pods对这个也有要求,所以最好选上。

这些信息都填写完成就可以点击创建了。

屏幕快照 2014-12-04 下午3.40.11

编写自己的库

先将自己在github上创建的库clone到本地,执行命令:

$ git clone https://github.com/Misstime0501/DemoCocoaPods.git (注:这里克隆的项目是你自己的就可以了)

打开clone到本地的文件夹,里面只显示这LICENSEREADME.md这两个文件,下面的操作都是在该目录下进行的

首先,在咱们文件夹下添加咱们所要引用的文件即咱们的库文件

屏幕快照 2014-12-04 下午3.53.08

为了简洁明了,只添加了一个DemoCocoaPods.h文件到文件夹中(注:为了不引起其他项目引用该库,创建的文件的文件名一定不要与引入该库的项目文件名有一样的命名

为了将该库作为CocoaPods的过程不出现其他影响因素,建议在这个时候就将该库上传一下即

现在咱们的项目如图:

屏幕快照 2014-12-04 下午4.03.32

.DS_Store文件为本地信息的传入,最好不要把它上传当项目中。

在项目目录下进行如下操作

在文件最下面输入.DS_Store

屏幕快照 2014-12-08 上午10.37.16

然后:wq

继续输入:

现在,咱们github服务器上面的项目就变成了这样:

屏幕快照 2014-12-04 下午4.32.12

添加.podspec文件

下面开始把咱们的库变成CocoaPods的库所需要的文件

添加后缀为.podspec文件,为了保证我们的库与项目名称同意,添加的文件为DemoCocoaPods.podspec

屏幕快照 2014-12-04 下午4.36.10

执行完该命令后,目录下多了一个DemoCocoaPods.podspec,在该文件中信息内容很多,但需要修改的内容并不多,

该文件是ruby的,所以很容易看懂他们是什么意思,主要用到的有如下几点:

 

更改完设置之后退出并保存对DemoCocoaPods.podspec的编辑

接下来进行pod的验证

设置版本号(注:该版本号要与DemoCocoaPods.podspec中的version一致

这两条命令是为pod添加版本号并打上tag.之后执行

下图为正常的验证

屏幕快照 2014-12-04 下午5.08.36

在执行pod验证的时候打印出warning或者error信息都是验证失败,对照着显示出的异常进行修改。打印信息很详细

将文件直接上传到github上

现在咱们github上面的项目就变成了这样:

屏幕快照 2014-12-04 下午5.12.39

这样,咱们的库就创建完成了,如果不把咱们的库上传到cocoapods.org到这里库的设置结束了,接下来咱们先介绍如何引用自己的库,之后在介绍如何上传到cocoapods.org。

自己创建库的引用

咱们继续用之前创建的CocoaPodsDemo来引用咱们自己的库

输入

屏幕快照 2014-12-04 下午5.18.20

之后执行

屏幕快照 2014-12-04 下午5.56.29

咱们的库这样就被添加到了pods目录下

屏幕快照 2014-12-04 下午5.57.50

这就是如何不通过cocoapods.org来添加咱们自己所制作的库!下面接着介绍如歌在cocoapods.org上面添加自己的库

CocoaPods上添加库

要想添加自己的库到别人的网站上,首先必须得把别人的项目down到咱们的机子上,在上传给他们,审核通过才会出现,所以第一步是获取cocoapods的代码,下载地址是:https://github.com/CocoaPods/Specs

下面的操作就是如何把别人的库获取到自己这里,修改后在提交给作者,他们的审核通过后咱们就可以在cocoapods上面看到咱们的库了~

fork一份Specs库

进入https://github.com/CocoaPods/Specs后点击fork

屏幕快照 2014-12-08 上午11.06.38

然后自己的库中会多出一个Specs的库,进入咱们自己的分支:

屏幕快照 2014-12-08 上午11.07.52

然后把她clone到本地,以便进行修改

添加咱们的podspec到Specs中

Specs下载到本地后,咱们会发现里面有茫茫多的文件夹,他们都是目前发送到cocoapods上面的库,而他们里面所拥有的也不过只是.podspec.json文件,所以咱们要传到Specs项目中的就是咱们自己的podspec文件,保存的原则是:

Specs文件夹–>咱们的Pos库文件夹–>版本号文件夹–>podspec文件

如图:

屏幕快照 2014-12-08 上午11.20.54

上传本地的Specs

刷新一下咱们自己的github库,可以看到咱们刚刚的上传:

屏幕快照 2014-12-08 上午11.27.29

之后咱们要把咱们的库提交到Specs中,

点击下图的绿色按钮

屏幕快照 2014-12-08 上午11.27.30

会显示到这个界面:

屏幕快照 2014-12-08 上午11.36.10

点击里面的Create Pull Request九个一把我们的Specs传给CocoaPods官方的Specs库中了。

剩下的就是等待了,等着CocoaPods维护人员审核咱们的库,如果通过了就可以在官方的cocoapods.com上面出现咱们的库,然后引用就可以了。

在等待的过程中可以通过https://github.com/CocoaPods/Specs/pulls这个网址,查看咱们项目的进度,当然cocoapods也会把结果发送到咱们的邮箱中,注意查收~

参考资料

http://code4app.com/article/cocoapods-install-usage

http://cocoapods.org/

http://guides.cocoapods.org

http://guides.cocoapods.org/using/index.html

http://blog.csdn.net/wzzvictory/article/details/20067595

http://blog.csdn.net/wzzvictory/article/details/19178709

http://blog.csdn.net/wzzvictory/article/details/18737437

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值