您的当前位置:首页正文

CocoaPods安装和使用及问题

来源:图艺博知识网

CocoaPods---iOS类库管理工具

在安装CocoaPods之前,首先要在本地安装好Ruby环境。

以下代码区域,带有 $ 打头的表示需要在控制台(终端)下面执行(不包括 $ 符号)

步骤0 - 安装系统需要的包

# For Mac

$ source ~/.rvm/scripts/rvm检查一下是否安装正确

$ rvm -v

步骤2 - 用 RVM 安装 Ruby 环境

列出已知的ruby版本

$ rvm list known

可以选择现有的rvm版本来进行安装(下面以rvm 2.0.0版本的安装为例)

$ rvm install 2.0.0

同样继续等待漫长的下载,编译过程,完成以后,Ruby, Ruby Gems 就安装好了。

另附:

查询已经安装的ruby

$ rvm list

卸载一个已安装版本

$ rvm remove 1.9.2

步骤3 - 设置 Ruby 版本

RVM 装好以后,需要执行下面的命令将指定版本的 Ruby 设置为系统默认版本

$ rvm 2.0.0 --default

同样,也可以用其他版本号,前提是你有用 rvm install 安装过那个版本

这个时候你可以测试是否正确

$ ruby -v

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin13.0.0]

$ gem -v

2.1.6

这有可能是因为Ruby的默认源使用的是cocoapods.org,国内访问这个网址有时候会有问题,网上的一种解决方案是将远替换成淘宝的,替换方式如下:

要想验证是否替换成功了,可以执行:

$ gem sources -l

正常的输出结果:

CURRENT SOURCES

到这里就已经把Ruby环境成功的安装到了Mac OS X上,接下来就可以进行相应的开发使用了。

安装Cocoapods

在终端中输入

(用淘宝的Ruby镜像来访问cocoapods)

//等有反应之后再敲入以下命令

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

$ gem sources -l

只有在终端中出现下面文字才表明你上面的命令是成功的:

*** CURRENT SOURCES ***

上面所有的命令完成之时,终端上是这个的样子:

这时候,你再次在终端中运行:

$ sudo gem install cocoa pods

等上十几秒钟,CocoaPods就可以在你本地下载并且安装好了,不再需要其他设置。

敲入以上命令时,终端上是这个样子的:

执行pod install 命令

出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里;

cd  到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次,这个目录最终大小是100多M,就是完成了

如何使用CocoaPods?

场景1:利用CocoaPods,在项目中导入AFNetworking类库

为了确定AFNetworking是否支持CocoaPods,可以用CocoaPods的搜索功能验证一下。在终端中输入:

$ pod search AFNetworking

过几秒钟之后,你会在终端中看到关于AFNetworking类库的一些信息。比如:

这说明,AFNetworking是支持CocoaPods,所以我们可以利用CocoaPods将AFNetworking导入你的项目中。

上图等一下要跟项目支持CocoaPods之后的项目Xcode目录结构做对比。

你看到这里也许会问,CocoaPods为什么能下载AFNetworking呢,而不是下载其他类库呢?这个问题的答案是,有个文件来控制CocoaPods该下载什么。这个文件就叫做“Podfile”(注意,一定得是这个文件名,而且没有后缀)。你创建一个Podfile文件,然后在里面添加你需要下载的类库,也就是告诉CocoaPods,“某某和某某和某某某,快到碗里来!”。每个项目只需要一个Podfile文件。

好吧,废话少说,我们先创建这个神奇的PodFile。在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,运行:

$ vim Podfile

然后在Podfile文件中输入以下文字:

platform :ios, '7.0'

pod "AFNetworking", "~> 2.0"

然后保存退出。vim环境下,保存退出命令是:

:wq

这时候,你会发现你的项目目录中,出现一个名字为Podfile的文件,而且文件内容就是你刚刚输入的内容。注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。

这时候,你就可以利用CocoPods下载AFNetworking类库了。还是在终端中的当前项目目录下,运行以下命令:

$ pod install

因为是在你的项目中导入AFNetworking,这就是为什么这个命令需要你进入你的项目所在目录中运行。

EricmatoMacBook-Pro:CocoaPodsDemo ericwang$ pod install

Analyzing dependencies

Downloading dependencies

Installing AFNetworking (2.0.2)

Generating Pods project

Integrating client project

[!] From now on use `CocoaPodsDemo.xcworkspace`.

注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。

你也许会郁闷,为什么会出现.xcodeproj文件呢。这正是你刚刚运行$ pod install命令产生的新文件。除了这个文件,你会发现还多了另外一个文件“Podfile.lock”和一个文件夹“Pods”。 点击 CocoaPodsDemo.xcworkspace 打开之后工程之后,项目Xcode目录结构如下图:

你会惊喜地发现,AFNetwoking已经成功导入项目了(红框部分)!

现在,你就可以开始使用AFNetworking.h啦。可以稍微测试一下,在你的项目任意代码文件中输入:

#import或者

#import "AFNetworking.h"

先在项目中创建Podfile,Podfile的内容是你想导入的类库。一般类库的原作者会告诉你导入该类库应该如何写Podfile;

运行命令:`$ pod install.

问题

1.[!] Oh no, an error occurred. ---Ruby 2.3兼容性问题

解决:

使用 vim 或者你熟悉的编辑工具打开 lazy_specification.rb

vim /usr/local/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver/lazy_specification.rb

在第16行也就是 subspec_by_name 的方法上面加入下面代码:

def respond_to_missing?(method, include_all = false)   specification.respond_to?(method, include_all) end

然后出现问题:

E212: Can't open file for writing 没有修改权限

解决:

打开时,前面加上sudo,使用最高权限,一般权限不够会使用sudo

sudo vim /usr/local/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver/lazy_specification.rb

然后就OK了

继续添加类库

需要修改Podfile了,就是用vim编辑的那个保存在项目根目录中的文件,修改完了Podfile文件,需要重新执行一次pod install命令。

pod 'JSONKit',       '~> 1.4'

pod 'MBProgressHUD', '~> 0.8'

更新现有的类库,输入$ pod update

文/奔跑的菜鸟(简书作者)

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

Top