最详细的CocoaPods使用教程,以及常见报错信息

原文使用链接 --- 报错链接

因为Swift中命名空间的存在,CocoaPods成为导入第三方的首选,本文详细介绍CocoaPods的集成,使用,常见报错总结

什么是CocoaPods?

CocoaPods是专门为iOS工程提供对第三方库的依赖的管理工具,通过CocoaPods,我们可以更方便地管理每个第三方库的版本,而且不需要我们做太多的配置。直观、集中和自动化地管理我们项目的第三方库。

我们都有这样的经历,当我们添加第三方库的时候,需要导入一堆相关依赖库,更新的时候也要删掉重新导入然后再配置。当我们需要更新某个第三方库的时候,我们又要手动移除该库,导入新的库,然后再配置。这些是很麻烦且没有意义的工作。

当我们开始使用CocoaPods管理第三方库后,我们只需要相当少的配置,其它的一切都交由CocoaPods来管理即可,我们使用起来就更省心了。

安装CocoaPods

1.首先更新gem到最新版本,在终端中输入:$
sudo gem update --system,注意不要把“$”复制上。等待一会儿会看到:

更新gem
2.删除自带的ruby镜像,终端输入:gem
sources --remove https://rubygems.org/
3.添加淘宝的镜像,终端输入:gem sources -a https://gems.ruby-china.org/(原来的淘宝镜像 https://ruby.taobao.org/已经不能用了)。
4.可以用gem sources -l 来检查使用替换镜像位置成功,结果应该只有 https://gems.ruby-china.org/ 才对。

修改镜像
5.安装CocoaPods,终端输入:sudo
gem install cocoapods。
等待一会儿会看到:

安装CocoaPods
6.然后配置下CocoaPods,终端输入:pod
setup。

配置CocoaPods
等待过程可能有点长,成功后会看到:

配置成功
到这里CocoaPods就安装好了。

查找第三方库

比如查找MJExtension,终端输入:pod
search MJExtension,第一次搜索他需要建索引,等待一会儿就可以了。

建索引中
完成后他会自动进入一个新的页面显示搜索结果,上下滑动查看更多,要退出的话按wq就可以了。以后再搜索就不需要建索引了。

查找结果
引入第三方库到项目中

我先在桌面上新建一个Test项目,然后演示把MJExtension导进去。
刚开始的文件目录是这样的

原始目录.png
1,首先打开终端,cd到Test路径下。

Test

2.然后生成并编辑一个Podfile文件,命令为vim Podfile,要导入的第三方都要在这里面写上。进去后需要先按I键进入编辑状态,写完后按esc,然后按shift+zz(或者先按shift+:,再按wq)就可以保存退出了。下面的动图里面都有。
Podfile的格式大概如下,其中'Test'为你的target的名字。
platform :ios,'8.0'
target 'Test' do
pod 'MJExtension', '~> 3.0.13'
end
3.安装,命令为:pod install。

安装第三方
安装成功之后,就可以去项目里面使用了。现在的项目文件变成了这样

屏幕快照 2016-09-07 23.23.19.png
之前我们一直是双击Test.xcodeproj打开项目,以后我们就要双击Test.xcworkspace打开了,打开后发现项目里面多了红色框的部分,可以看到MJExtension已经被引入了。

多出来的文件
使用第三方

你会发现当引入MJExtension的头文件时,可以#import
<MJExtension.h>或者#import <MJExtension/MJExtension.h>,但是却不能在输入#import
"MJExtension.h"的时候出现提示。虽然强制输入也可以编译通过,但是感觉很不爽。
解决这个问题的办法是在工程的Build Settings搜索Search,然后在User
header search paths中添加$(SRCROOT)并选择recursive。

头文件不提示的解决办法

现在就可以提示#import "MJExtension.h"啦。
然后我们就可以在项目里面使用MJExtension的方法啦。

使用MJExtension
增加新的第三方

如果使用过程中我还想添加其他的第三方怎么办,只要在Podfile里面接着添加,然后终端再执行pod
install就可以了。

新增第三方

更新CocoaPods中的第三方们。

第三方库们都有人在维护升级,我们需要隔断时间就要更新下我们工程中第三方库的版本。只需要终端输入命令pod
update就可以了。

如果遇到pod
install或者pod update慢的问题,原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update

删除CocoaPods中的某些第三方们。

当我们需要去掉某个第三方库时,只需要在Podfile删除该引入该库的语句,然后执行pod
update或者pod install就可以了。

将CocoaPods从项目中删除

如果你在以后的使用过程中不想用CocoaPods了怎么办?很简单,把多出来的东西们都删掉就可以了,不过为了项目正常运行,你需要手动导入已经使用的第三方们哦。

将CocoaPods从项目中删除
升级CocoaPods

升级CocoaPods版本的命令和安装CocoaPods的命令一样,都是sudo
gem install cocoapods。
如果老版本升级cocoapods的时候提示Operation not permitted - /usr/bin/xcodeproj,改用命令sudo
gem install -n /usr/local/bin cocoapods --pre就可以了。

卸载CocoaPods

卸载CocoaPods的命令是sudo
gem uninstall cocoapods

卸载CocoaPods
执行完命令后,最下面打印Successfully uninstalled cocoapods字样就代表已经成功卸载了。

CocoaPods Mac App的安装和使用

CocoaPods桌面应用版下载地址:https://cocoapods.org/app
打开应用会提示你是否安装命令行工具,选择install就也可以在命令行使用Pod了。省去了上面的步骤们,方便快捷的使用CocoaPods。

是否安装命令行工具
现在假如要给一个Test项目加入第三方库
1.选择File-New Podfile from Xcode Project,去选择项目的Project文件。

选择项目
2.填写自动生成的Podfile,并且安装。

Podfile
然后就可以去打开工程了,是不是比命令行简单多了。
注意:Cocoapods.app 删掉并执行命令可能会报错:Unable to locate the CocoaPods.app
application bundle. Please ensure the application is available and launch it at least once

常见错误总结

错误1、

当写在Podfile文件中的第三方框架,不能使用,找不到时
查看Pods文件夹,是否下载了所需要的第三方框架,没有的话就 pod update

错误2、

Could not automatically select an Xcode project. Specify one in your Podfile like so:xcodeproj 'path/to/Project.xcodeproj'

在Podfile文件里指定下工程目录就行了
xcodeproj 'Demo/Demo.xcodeproj'

但是如果cocoapods版本为(1.0.0或更高)的话,可能会有以下警告

[!] xcodeproj was renamed to project. Please use that from now on.

这时只需要把xcodeproj改为 project就行了

project 'Demo/Demo.project'

错误3、

The dependency AFNetworking (~> 3.0) is not used in any concrete target.

在Podfile中添加
target‘项目名'do (如 target 'Demo' do )

错误4、

[!] Invalid Podfile file: syntax error, unexpected end-of-input, expecting keyword_end.

在Podfile的末尾添加 end

错误5、

Unable to find the Xcode project /Volumes/BIAO/iOS/code/MBWB.xcodeproj for the target Pods.

在Podfile中 将 project 'Demo/Demo.project’ 改成 project 'Demo.project'

错误6、

build diff: /../Podfile.lock: No such file or directory

在工程设置中的Build Phases下删除Check Pods Manifest.lock及Copy Pods Resources

还有一个更新慢的问题:无论是执行pod install还是pod update都卡在了Analyzing dependencies不动

原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:

pod install --verbose --no-repo-update

pod update --verbose --no-repo-update

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

推荐阅读更多精彩内容