Cocoapods安装

CocoaPods的简介:

CocoaPods负责管理iOS项目中第三方框架。CocoaPods的项目源码在Github上管理。项目从2011年8月12日开始,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间,是一个第三方框架的管理工具!

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

步骤1 - 安装 RVM

具体RVM 是干什么的,说实话,我也没搞懂,查了一下,应该是第三方安装工具

$ curl -L https://get.rvm.io | bash -s stable

安装过程可能会需要sudo管理员权限也可能不需要管理员密码视个人情况而定,以及自动通过homebrew安装依赖包,等待一段时间后就可以成功安装好 RVM。

然后,载入 RVM 环境(新开 Termal 就不用这么做了,会自动重新载入的)

$ source ~/.rvm/scripts/rvm

检查一下是否安装正确

$ rvm -v

正确安装以后会显示下面一些信息
rvm 1.22.17 (stable) by Wayne E. Seguin , Michal Papis [https://rvm.io/]

步骤2 - 安装Homebrew工具

点击���Homebrew安装方法,Homebrew是MAC OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。

Homebrew的介绍点击

步骤3 - 用 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.1)在安装过程中可能存在的问题

(1).发生了读写错误信息,如图所示:

红色是报错信息

这个错误是因为Homebrew发生了not writable的错误,也就是说Homebrew不可写入的错误

解决办法的终端命令是:

$ rvm autolibs read-only # read more here:https://rvm.io/rvm/autolibs

$ rvm install ruby

输入这个终端命令之后,就会进入疯狂的下载模式了

(3.2)出现can not find 'brew' command,please report a bug http....这个错误的时候,是指电脑没有装brew软件,回到步骤二中去安装brew软件

步骤4 - 设置 Ruby 版本

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

$ rvm 2.3.0 --default

同样,也可以用其他版本号,前提是你有用 rvm install 安装过那个版本,现在最新的版本已经升级到2.5.1这个版本了,你可以使用最新版本,也可以使用你安装的版本,但是之前有的老版本已经停止维护了,所以在安装的时候最好安装还在维护的版本

这个时候你可以测试是否正确,查看一下ruby版本:

$ ruby -v

ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]

$ gem -v

2.5.1

下面是将ruby的cocoapods.org换成淘宝的,国外的网址有时访问不了

$ gem source -r https://rubygems.com/

$ gem source -a https://ruby.taobao.org

淘宝源已经停止更新了,现在使用China的源了,终端输入

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

但是在终端执行过后,我这边电脑有了一个新的报错,这个是因为最新的系统中由于OpenSSL出现了漏洞,苹果已经开始弃用这个了,所以出现的问题,问题提示如下:

ERROR: While executing gem ... (Gem::Exception) Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources

这个是由于缺乏OpenSSL导致的,解决办法有两个,第一是安装OpenSSL这个软件,第二是使用http地址,即https://gems.ruby-china.org/修改成http://gems.ruby-china.org/的源地址即可以

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

$ gem sources -l

正常的输出结果:

CURRENT SOURCES

http://gems.ruby-china.org/

到这里就已经把Ruby环境成功的安装到了Mac OS X上,接下来就可以安装cocoapods了


二、安装cocoapods,并使用cocoapods管理第三方框架

安装cocoapods只需一行命令

$ sudo gem install cocoapods

然后去执行

pod setup

去进行cocoapods的安装,然后你会看到出现了Setting up CocoaPods master repo,卡住不动了,暂时不要着急,这个下载的东西比较大,跟网络有关系,安心等待一会

如果在在pod setup中出现了error: RPC failed; curl 56 SSLRead() return error -36这个问题有两种解决办法可以尝试:

(1).这个是由于电脑里面拥有两个客户端,或者是之前电脑使用了两个客户端导致的

在终端输入”sudo xcode-select -switch “,然后,打开Xcode—>右键显示包内容,找到Developer文件夹拖到终端里面,回车,再重新执行 pod setup

(2).第二个原因可能是因为是postBuffer默认值较小的原因,配置一个大一点的值,终端输入

git config --global http.postBuffer 524288000

最后在等待一会,发现底部出现完成的提示信息,就说明cocoapods的安装工作就完成了,下面是使用的简单介绍:

以下以AFNetWorking为例,说一下cocoapods如何管理第三方框架

首先,搜索一下cocoapods是否支持AFNetWorking

$ pod search AFNetWorking

稍后会列出AFNetWorking的一些信息,还有一些AFN中最新的以及常见的版本,因此可以使用cocoapods来管理

在终端中进入(cd命令)你项目所在目录(可以直接在终端中cd 然后将目标文件直接拖拽到终端去),然后在当前目录下输入:

$ pod init

然后在项目中回多出一个Podfile文件,打开这个文件,是下图样子

这里写图片描述

这个时候以SDWebImage跟AFN为例子,将其文件修改成

这里写图片描述

这时候,你就可以利用CocoPods下载相对应的类库了。还是在终端中的当前项目目录下,运行以下命令:
$ pod install
因为是在你的项目中导入相对应的类库,这就是为什么这个命令需要你进入你的项目所在目录中运行。
运行上述命令之后,小编的终端出现一些信息:(不用管)

最后一句注意下:
[!] From now on use CocoaPodsDemo.xcworkspace.
注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。

这里写图片描述

至此,就完成了在此项目中使用cocoapods管理三方;
特别提示:如果出现 setting up cocoapods master repo 请等待;


三、使用过程中遇到的问题
1 - 卡在Creating search index for spec repo 'master'..,

卡在Creating search index for spec repo 'master'..,千万别着急,这只是因为是你第一次安装使用cocoapods正常卡顿,具体是往~/.cocoapods文件里导库,耐心等待就好,时间不一定;

2 - 报“Unable to find a pod with name, author, summary, or descriptionmatching”错误,

请在终端执行“rm ~/Library/Caches/CocoaPods/search_index.json”命令,然后再“pod search AFNetworking”即可。

3 - 发现有的时候在执行pod init的时候不能正常地创建出来pod File文件,显示的错误如下:
――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

### Command

/Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/bin/pod init


### Report

* What did you do?

* What did you expect to happen?

* What happened instead?


### Stack


   CocoaPods : 1.0.1
        Ruby : ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
    RubyGems : 2.6.6
        Host : Mac OS X 10.12.6 (16G29)
       Xcode : 9.0 (9A235)
         Git : git version 2.10.1
Ruby lib dir : /Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/lib
Repositories : master - https://github.com/CocoaPods/Specs.git @ 74d8002565cb1b582426b5affef1b97991b4c14c


### Plugins


cocoapods-deintegrate : 1.0.1
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.0.0
cocoapods-trunk       : 1.0.0
cocoapods-try         : 1.1.0


### Error


RuntimeError - [Xcodeproj] Unknown object version.
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/xcodeproj-1.3.0/lib/xcodeproj/project.rb:217:in `initialize_from_file'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/xcodeproj-1.3.0/lib/xcodeproj/project.rb:102:in `open'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/cocoapods-1.0.1/lib/cocoapods/command/init.rb:41:in `validate!'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/claide-1.0.0/lib/claide/command.rb:333:in `run'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/cocoapods-1.0.1/lib/cocoapods/command.rb:50:in `run'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/cocoapods-1.0.1/bin/pod:55:in `'
/Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/bin/pod:22:in `load'
/Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/bin/pod:22:in `
' /Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval' /Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `
' ――― TEMPLATE END ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― [!] Oh no, an error occurred. Search for existing GitHub issues similar to yours: https://github.com/CocoaPods/CocoaPods/search?q=%5BXcodeproj%5D+Unknown+object+version.&type=Issues If none exists, create a ticket, with the template displayed above, on: https://github.com/CocoaPods/CocoaPods/issues/new Be sure to first read the contributing guide for details on how to properly submit a ticket: https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md Don't forget to anonymize any private data! wangwang:WWTestCocoaPodsError wangyongwangyongwang$ 执行pod init的时候的错误提示

这里是指pods的版本过低了,只需要将其pods版本更新一样就可以了
gem install cocoapods --pre

4 - mapping values are not allowed in this context at line 3 column 4
――――――――――MARKDOWN TEMPLATE ――――――――――

### Report

* What did you do?

* What did you expect to happen?

* What happened instead?

### Stack


CocoaPods : 0.29.0

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

RubyGems : 2.1.11

Host : Mac OS X 10.9.2 (13C64)

Xcode : 5.1 (5B130a)

Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib

Repositories : master - https://github.com/CocoaPods/Specs.git @ bd6736d07b16c98ab7a1dae04697cae002f25a9b


### Podfile

ruby

platform :ios,'8.0'

pod 'MBProgressHUD', '~> 0.8'

### Error


Psych::SyntaxError - (/Users/MAXJ/.cocoapods/repos/master/CocoaPods-version.yml): mapping values are not allowed in this context at line 3 column 4

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:205:in `parse'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:205:in `parse_stream'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:153:in `parse'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:129:in `load'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:299:in `block in load_file'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:299:in `open'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:299:in `load_file'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/sources_manager.rb:261:in `version_information'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/sources_manager.rb:222:in `repo_compatible?'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/sources_manager.rb:281:in `master_repo_functional?'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/command.rb:39:in `parse'

/Library/Ruby/Gems/2.0.0/gems/claide-0.4.0/lib/claide/command.rb:179:in `parse'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/command.rb:38:in `parse'

/Library/Ruby/Gems/2.0.0/gems/claide-0.4.0/lib/claide/command.rb:211:in `run'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/command.rb:51:in `run'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/bin/pod:24:in `'

/usr/bin/pod:23:in `load'

/usr/bin/pod:23:in `'


―――――――――― TEMPLATE END ――――――――――

[!] Oh no, an error occurred.

Search for existing github issues similar to yours:

https://github.com/CocoaPods/CocoaPods/search?q=%28%2FUsers%2FMAXJ%2F.cocoapods%2Frepos%2Fmaster%2FCocoaPods-version.yml%29%3A+mapping+values+are+not+allowed+in+this+context+at+line+3+column+4&type=Issues

If none exists, create a ticket, with the template displayed above, on:

https://github.com/CocoaPods/CocoaPods/issues/new

Don't forget to anonymize any private data!

解决方案:

$ sudo rm -rf ~/.cocoapods/repos/master

$ pod setup

5.出现了[!]The 'pods-xxx' target has libraries with conflicting name: libcrypto.a and libssl.a这个错误,如下图所示:

在pods的使用过程中出现的问题

解决这个问题的主要方法就是降低pods的版本号,即是讲最新版本的pods卸载,然后在重新安装一个指定版本的pods,终端指令如下:

查看pods的版本号

pod --version

卸载pods

sudo gem uninstall cocoapods
卸载成功

安装指定版本的pods

gem install cocoapods -v 1.0.0
安装pods成功

然后可以利用查看版本号的命令去查看是否成功修改了


参考文献:

cocoapods详细安装
iOS安装CocoaPods详细过程
cocopods 安装报错 RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54

你可能感兴趣的:(Cocoapods安装)