Mac安装CocoaPods详解

同步在 github仓库

第一部分、Mac安装CocoaPods详解

目录

  • Ruby环境的安装
    • 安装系统需要的包
    • Homebrew安装
    • 安装RVM
    • 使用RVM安装Ruby环境
    • 设置 Ruby 版本
    • 替换Ruby源为taobao.org
  • 安装CocoaPods
    • CocoaPods是什么?
    • 直接安装CocoaPods
    • 更新repos文件
  • CocoaPods使用原理
  • 后期使用出现的问题
    • 问题一:”setting up cocoapods master repo”卡着不动
    • 问题二:pod search异常

一、Ruby环境的安装

1.1、安装系统需要的包

先安装 Xcode 开发工具,它将帮你安装好 Unix 环境需要的开发包

1.2、Homebrew安装

1.2.1、HOMEBREW是神马

linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案,Red hat有yum,Ubuntu有apt-get神马,你用mac os,不好意Mac os木有类似的东东,泪奔中几经折腾总算找到了第三方支持:Homebrew,Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum神器

1.2.2、是否已安装HOMEBREW

brew search rabbitmq,能搜索到则证明已安装。

LionsomMBP:~ lionsom$ brew search rabbitmq
==> Searching local taps...
rabbitmq                                 rabbitmq-c
==> Searching taps on GitHub...
caskroom/cask/rabbitmq-app
==> Searching blacklisted, migrated and deleted formulae...

1.2.3、安装HOMEBREW

安装 Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

将以上命令粘贴至终端。

1.2.4、更多详情,请前往HOMEBREW官网查看

1.3、安装RVM

1.3.1、RVM是什么?

Ruby Version Manager简称RVM,是一款非常好用的ruby版本管理以及安装工具。

1.3.2、具体安装步骤

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

期间可能会问你sudo管理员密码,以及自动通过homebrew安装依赖包,等待一段时间后就可以成功安装好 RVM。

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

$ source ~/.rvm/scripts/rvm

检查一下是否安装正确

$ rvm -v
rvm 1.29.3 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

1.4、使用RVM安装Ruby环境

列出已知的ruby版本

$ rvm list known

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

$ rvm install 2.4

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

如果Honebrew没有安装,则在此过程中会进行自动安装。

  • 查看是否安装成功

    $ ruby -v
    
  • 查询已经安装的ruby

    $ rvm list
    
  • 卸载一个已安装版本

    $ rvm remove 1.9.2
    

1.5、设置 Ruby 版本

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

$ rvm 2.4.1 --default

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

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

$ ruby -v

ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin17]

1.6、替换Ruby源为taobao.org (过时,最新看1.7)

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

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

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

$ gem sources -l

正常的输出结果:

*** CURRENT SOURCES ***

https://ruby.taobao.org

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

1.7、替换Ruby源为ruby-china(最新)

可以查看公告 Ruby China 的 RubyGems 镜像上线

新的使用方法

请尽可能用比较新的 RubyGems 版本,建议 2.6.x 以上。

$ gem update --system # 这里请翻墙一下
$ gem -v
2.6.3
$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.com
# 确保只有 gems.ruby-china.com

二、安装CocoaPods

2.1、CocoaPods是什么?

当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。

CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。

2.2、直接安装CocoaPods

直接在终端输入

$ sudo gem install cocoapods

等待一小段时间,安装完成!!

验证是否安装成功:

$ pod --version

或者

$ pod search AFNetworking

2.3、在使用Pod进行操作之前最好手动更新repos文件(解决详情见4.1)

为什么最好手动导入呢?

如果不手动导入也没有问题,再使用pod search AFNetworking的时候pod会自动进行setting up cocoapods master repo的更新,由于文件过大,需要下载好一会儿。所以此时使用手动添加repos的文件比较方便。

[图片上传失败...(image-9065a0-1566455300178)]

2.4、如何前往.COCOAPODS文件

  • 显示隐藏文件Command + shift + .
  • 也可在Finder -> 前往 -> 前往文件夹 -> ~/.cocoapods

[图片上传失败...(image-d8b841-1566455300178)]

  • 具体路径如下

[图片上传失败...(image-d842bb-1566455300178)]

三、CocoaPods使用原理

  • pod setup
    • 远程索引库下载到本地
    • 本地索引库路径(查看2.3.1)
    • 同时生成检索文件(Key-Value格式,便于检索)
  • pod search AFN
    • 前往检索文件检索
    • 然后根据检索到的Value找到本地索引库.spec查看框架的具体信息
  • pod install
    • 得到AFN框架远程地址下载到我们项目中

四、后期使用出现的问题

4.1、问题一:”setting up cocoapods master repo”卡着不动

概述

CocoaPods首次安装使用时均需要强制拉取repos,因为repos是在GitHub托管的,导致容易出现拉取缓慢超时和异常中断等问题,以往大家为解决这一问题一般会采用替换国内镜像的方式来解决,可惜国内镜像更新不及时的问题也是没有办法解决。实际上我们都知道CocoaPods拉取repos就是将托管服务器中的Specs项目克隆至本地的过程,所以解决办法就出现啦,见『解决二』。

4.2、问题二:pod search异常

4.2.1、执行pod setup

  • 终端输入:pod search AFNetworking
  • 输出:Unable to find a pod with name, author, summary, or descriptionmatching 'AFNetworking' 这时就需要继续下面的步骤了。

4.2.2、删除~/Library/Caches/CocoaPods目录下的search_index.json文件

  • pod setup成功后,依然不能pod search,是因为之前你执行pod search生成了search_index.json,此时需要删掉。
  • 终端输入:rm ~/Library/Caches/CocoaPods/search_index.json
  • 删除成功后,再执行pod search

4.2.3、执行pod search

  • 终端输入:pod search afnetworking(不区分大小写)
  • 输出:Creating search index for spec repo 'master'.. Done!,稍等片刻······就会出现所有带有afnetworking字段的类库。

五、奇淫巧技

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的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

第二部分、Cocopods各种问题汇总

推荐文档

iOS之CocoaPods常见问题汇总

一、GCC_PRECOMPILE_PREFIX_HEADER重写

当导入 pod 'Texture' 时,遇到如下问题, 图1.1
提示GCC_PRECOMPILE_PREFIX_HEADER重写,我们进入提示的文件查看,图1.2
发现:我们项目本身使用PCH,所以对GCC_PRECOMPILE_PREFIX_HEADER进行了设置,图1.3
而pod的库 Texture 也对其进行了设置,图1.4
从而导致改警告的发生,重写。

最终修改:在building setting中搜索 GCC_PRECOMPILE_PREFIX_HEADER ,然后在 Other 中添加上$(inherited)图1.5,再次pod install,警告也就没有了。

重要参考
辅助参考- stackoverflow

图1.1

[图片上传失败...(image-176c2f-1566455300178)]

图1.2

[图片上传失败...(image-ba15eb-1566455300178)]

图1.3

[图片上传失败...(image-28bb56-1566455300178)]

图1.4

[图片上传失败...(image-4096da-1566455300178)]

图1.5

[图片上传失败...(image-8b132a-1566455300178)]

二、- Use the $(inherited) flag, or - Remove the build settings from the target.

stackoverflow同文

问题截图

[图片上传失败...(image-37c27c-1566455300178)]

解决方案

[图片上传失败...(image-7024af-1566455300178)]

三、不要使用TextEdit编辑PodFile文件

[!] Smart quotes were detected and ignored in your Podfile. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.
使用TextEdit编辑警告
解决方案:用Xcode打开Podfile 看看里面的pod类库是不是像中文引号 编辑改下就行了 在外面打开编辑就会产生这样的问题

四、overrides the ENABLE_BITCODE ......

[图片上传失败...(image-cbaa37-1566455300178)]

解决方案:pod update 将库更新一下,然后再pod install 就没有警告了。

五、[!] ERROR: Parsing unable to continue due to merge conflicts present in:

[图片上传失败...(image-f37c8e-1566455300178)]

解决方案:在Podfile.lockManifest.lock 中有冲突,解决下冲突即可。

[图片上传失败...(image-a71c2a-1566455300178)]

六、Cocoapod版本过低警告

[图片上传失败...(image-e0f1c4-1566455300178)]

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

推荐阅读更多精彩内容

  • 第一次安装CocoaPods也遇到了一些坑,但是 那个时候时间比较紧,没有抽出时间整理,最近因为电脑还原从新做了系...
    幸福的尾巴__阅读 7,999评论 7 9
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,476评论 3 51
  • cocoapods安装过3次都蜜汁失败 在第七次终于成功 下列附上过程 有耐心的朋友可以试试的我的步骤和方法 ps...
    _Dam0n阅读 2,345评论 0 1
  • 一.CocoaPods是什么? CocoaPods是一个用Ruby写的、负责管理iOS项目中第三方开源库的工具,C...
    王小祺阅读 681评论 1 0
  • 当你看清了一个人而不揭穿, 你就懂得了原谅的意义,讨厌一个人而不翻脸, 你就懂得了至极的尊重。 活着,总有你看不惯...
    一只大白熊阅读 67评论 0 0