CocoaPods(一) 安装、使用

Ruby的更新
检查Ruby的版本

Mac系统自带的安装的了ruby,ruby --version可以查看系统版本。

查看ruby版本
更新Ruby的版本

因为Mac自带安装了ruby,但是有时候版本太低,无法满足需求,所以需要升级ruby的版本。
gem、rvm都是两种来更新ruby的方式,但是如果公司的网络设置了代理,那么上面两种方式来更新ruby会失败,需要用到下面的指令来设置代理。(关闭终端窗口之后,代理设置就会失效,需要重新设置。)

设置ruby的代理
废弃的镜像

淘宝的镜像https://ruby.taobao.org/已经不可用了。现在用最新支持的ruby镜像https://gems.ruby-china.org/。当然随着时间流逝,该镜像也可能会失效。最新ruby镜像查询

镜像安装命令

gem sources -r https://rubygems.org/(移除旧版本的镜像,如果你不知道你电脑上目前用的是什么镜像,可用 gem sources -l 来查看)
gem sources -a https://gems.ruby-china.org/ (增加可用的镜像)
gem sources --add https://gems.ruby-china.org/ (如果上面的语句不起作用,参考这里
gem sources -l (用来检查使用替换镜像位置成功)

镜像下载图

2.1 下载CocoaPods文件

2.2、下载repo,输入pod setup
sudo gem install cocoapods 这个命令在MacOS10.13之前的系统上使用没有问题是可以安装CocoaPods的,但是想要在MacOS10.13的系统上装CocoaPods是行不通的。一直会提示time out。参考了这篇文章之后,尝试了一下居然可以下载了。

MacOS10.13安装CocoaPods

终端会提示 Setting up CocoaPods master repo 表示正在下载了。如果是一次是下载慢的话可能需要半个小时左右。
新开一个终端窗口,输入"cd ~/.cocoapods/"命令行跳到cocoapods文件夹内,
然后输入" du -sh * " 可以查看已经下载的内容大小

  1. 随着MacOS系统的提高,有时候会出现之前的环境太老的情况,比如ruby版本太低,需要更新ruby,参考这里更新或者安装ruby

  2. 网络限制,一些大的公司可能对网络有限制,连接外网需要走专门的代理,这个时候更新会遇到各种各样的坑。
    2017年08月09日14:12:042

zhouzewen:~ civet$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://gems.ruby-china.org/ - no such name (https://gems.ruby-china.org/specs.4.8.gz)

安装cocoapods遇到这个报错,解决的办法是用手机分享了一个热点给电脑,利用这个网络才装好cocoapods。


使用pod 下载第三方库

2017年08月09日15:43:37

[!] Unable to find a pod with name, author, summary, or description matching SDWebImage

pod search 第三方库的时候提示这个错误,参考cocoapods找不到第三方库od search 搜索类库失败的解决办法两篇文章,删除了seach_index.json文档之后就重新 pod search 第三方库经过漫长的等待(重新下载seach_index.json),就可以了。

当你需要用pod导入一个第三方库的时候,首先要搜索下改库的一些信息。
pod search 库名 例如 pod search SDWebImage (search的时候,库的名字可以小写)

SDWebImage库版本信息2017-01-11 下午8.49.09.png

可以看到最新的4.0 还在测试中,下面有个3.7的是可以用的。
知道了这些之后,就需要来新建Podfile了。
新建一个Xcode项目,比如名字叫做Demo,然后在终端中cd到该目录下。
touch Podfile 这个时候会在该目录下新建这个文件。需要在这个文件中输入一些设置内容。(注意:Podfile要和Test.xcodeproj在同一目录下,而不能是Test目录下。否则配置pod的依赖路径会一直有问题。)
两种方式可以输入内容
1.直接打开Podfile 输入文本
2.终端vim 命令
两者内容都是一样的。


Podfile内容.png

platform : ios '7.0' (平台是iOS 系统 版本最低是7.0 , OS 不要大写)
pod 'SDWebImage','~>3.7' (pod导入第三方库SDWebImage 分好不要省略,箭头是~>不是->)
target 'Test' do (如果项目中有多个taget,那么就Test就替换成需要的那个,不要写成Test.xcodeproj ,后面的 do 不能少)
end (表示内容结束,也是不能省略的)
如果需要添加多个第三方库,那么可以在end 之前继续pod ,如 pod 'AFNetworking' , '~>3.0'
注意:Podfile中的库名是区分大小写的,要写的和库的原名一样,不要大小写混乱了。

2017年08月09日16:24:36

[!] Pods written in Swift can only be integrated as frameworks; add use_frameworks! to your Podfile or target to opt into using it. The Swift Pod being used is: KissXML

在安装XMPPFramework的时候遇到这个问题,原因是不允许建立包含swift的静态库,可能xmppframework中包含有swift文件,所以需要另外建立Podfile。可以参考这里

新的Podfile写法
给项目安装pod.png

2017年08月09日16:31:22

[!] 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.
这个问题是由于Podfile中的单引号用的是中文的,所以最好还是用vim命令去修改Podfile,全程用英文输入,确保不会有中文标点之类的。

Podfile中文引号问题

安装好了之后需要配置 user header search path

配置路径.png

Build Settings 中一共有三项来配合 头文件的搜索路径
Header Search Paths #import <> 一般是系统的头文件
User Header Search Paths #import "" 非系统的头文件,一般是第三方的或者自己的
Always Search User Paths YES/NO
当 Always Search User Paths 设置为YES的时候,表示User Header Search Paths 的优先级会高于系统的。


pod提供的默认搜索路径.png

#import <UIImageView+WebCache.h> 这样有点不习惯,
如果你想要用#import "UIImageView+WebCache.h"的方式导入,可以在User Header Search Paths添加搜索路径。
$(PODS_ROOT) 并选择递归


搜索路径配置.png

常用cocoapods命令
pod install --verbose --no-repo-update 插入第三方库
pod install --verbose --no-repo-update 更新第三方库
单独更新或插入某个第三方库 两种写法
pod update 库名
pod update 库名 --verbose --no-repo-update

pod install 更新所有第三方库

2017年10月16日11:24:32

创建私有的库,通过Pod 引入到自己的项目中。可以参考使用Cocoapods创建私有podspec来创建。

2018年03月07

Podfile内容
Pod install 警告

两个target其中一个是framework,所以默认的项目配置和Project的不同,所以需要配置一些东西。
根据提示的第一条,Target是 CivetRTCkit,配置项OTHER_LDFLAGS,要使用$(inherited)

添加路径

后面的一个是release的,目前是开发版本所有无需修改。这样再次执行pod install 之后项目就可以运行了。

2018年04月15日

pod install命令无法正确的执行

下载安装Xcode9.3之后,运行pod install报错

看到有新版本的Xcode,所以在本机拥有Xcode9.2的情况下下载9.3,然后运行pod install的时候发现错误。鉴于之前的经验,安装了和9.3匹配的commandline工具之后,就没有问题了。但是本地的cocoapods库比较老旧了,所以需要更新了一下本地的repo。

更新cocoapods的repo

2018年05月30日

重复导入SDWebImage

podfile文件中只pod 'SDWebImage', '~> 4.0.0'但是终端提示导入了两个版本,回顾之前的操作,发现是pod 'NIMKit/Full',网易云信的这个库会添加一些依赖的库,其中就包括了SDWebImage.

NIMKit默认增加的依赖库.png

解决办法是注释掉podfile文件中SDWebImage的库

cocoapods版本过低的提示

pod --version查了一下当前的版本是1.3.1,但执行sudo gem update --system,猜测可能是Xcode版本过低导致的原因,本地是9.2,去官网下载了一个9.3的,最新的XCode是9.4。然后安装了对应的commandlineTool之后, 执行sudo gem update --system就成功了,然后安装一下cocoadpods就可以了.

更新cocoapods

pod search不到需要的库

新电脑安装完cocoapods之后例行测试一下,发现无法搜索到库。

无法search到库

参考CocoaPods: pod search 搜索类库失败的解决办法就解决了。

搜索不到库的解决办法
搜索类库失败的解决办法博客内容

按照步骤就可以完成了,值得一提的是卡在Creating search index for spec repo 'master'..这句话这里很久。

2018年10月11日
用Xcode10创建了一个项目之后,安装cocoapods遇到警告,而且项目中无法饮用第三方库的头文件。

无法搜索到第三方库的问题

警告内容说的很清楚了,就是需要添加在HEADER_SEARCH_PATHS中添加$(inherited)这个路径就好了。另外这篇博客的错误13还提到了一些其他的解法。


参考资料
关于使用cocoaPods,import导入时第三方库头文件没有提示问题的解决办法
2016 cocoapods的安装和使用以及版本升级遇到的问题
Setting up CocoaPods master repo 卡着不动
iOS项目中安装和使用 Cocoapods
细聊 Cocoapods 与 Xcode 工程配置
iOS 库依赖管理工具CocoaPods「安装+问题解决+活用」
单独更新某一个库
安装Cocoapod遇到的问题
卸载Cocoapod

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

推荐阅读更多精彩内容