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 <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [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源

admin@admindeiMac ~ % gem sources -l
*** CURRENT SOURCES ***

https://rubygems.org/

下面是将ruby的源换成国内可用的,国外的网址有时访问不了
之所以要添加国内的 ruby-china源,是因为taobao源已经停止维护了,所以此处替换的是ruby-china源,且尽量确保只有一个。

//移除原有镜像源:
gem sources --remove https://rubygems.org/
//添加国内镜像源
gem sources --add https://gems.ruby-china.com

但是在终端执行过后,我这边电脑有了一个新的报错,这个是因为最新的系统中由于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 `<top (required)>'
/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 `<main>'
/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 `<main>'


――― 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安装
pods中openssl的报错处理,M1处理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容