CocoaPods1.4.0 安装使用详解

CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库,轻松管理第三方库的版本。

CocoaPods安装步骤

1. 查看Ruby版本,升级Ruby环境

CocoaPods是基于ruby ecosystem的,需要ruby环境,使用ruby的gem命令。所以我们的系统要有ruby环境。然而Mac系统默认会安装好ruby环境。可在终端ruby -v查看ruby版本:
先查看一下ruby的版本

//查看ruby版本
ruby -v 或者 ruby --version
//输出信息
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]

看能不能直接升级系统的gem
gem update --system
如果不行,看能不能直接更新rubygems
sudo gem install rubygems-update
如果失败

ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem

则执行
sudo gem install -n /usr/local/bin cocoapods

2. 更换Ruby镜像

gem sources -l查看ruby源

8089AA51-4E5B-4014-8A68-1E0943FCDFD9.png

发现这是国外的源,在中国是被屏蔽了的,所以要替换为国内的源
移除国外的源gem sources --remove https://rubygems.org/
添加国内的源gem sources -a https://gems.ruby-china.org/
现在.org停止访问了,要换成gem sources -a https://gems.ruby-china.com/
image.png

gem sources -l查看是否替换成功

*** CURRENT SOURCES ***

        https://gems.ruby-china.org/
3. 安装CocoaPods

sudo gem install cocoapods
报错1:
ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/bin directory.
说明是一些系统权限的原因,换成
sudo gem install -n /usr/local/bin cocoapods就行了。

932A9DC9-A623-457E-95AB-14611FD45C90.png

错误2:
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.
解决方案一: https://stackoverflow.com/questions/20939568/error-error-installing-cocoapods-error-failed-to-build-gem-native-extension
没有安装brew的,自己搜索安装方法安装就行,这里不再赘述。
解决方案二: https://blog.csdn.net/a892445213/article/details/104837529
注意: 安装完rvm后,要重新开启一个终端,rvm命令才生效。

目前我使用方案二才解决的问题。

4. 更新索引仓库

pod setup把最新的类库信息拉取到本地spec文件,因为CocoaPods每次查找类库是从本地查找的,如果要保持查找到的类库是最新的,需要更新索引仓库。这个过程会比较慢。
然后你会看到出现了Setting up CocoaPods master repo,卡住不动了,说明Cocoapods在将它的信息下载到 ~/.cocoapods里。 你可以command+n新建一个终端窗口,执行cd ~/.cocoapods/进入到该文件夹下,然后执行du -sh *来查看文件大小,每隔几分钟查看一次,这个目录最终大小是900多M(我的是930M) 当出现Setup completed的时候说明已经完成了。

66BE7170-B519-4E12-9670-DA77EE7082FB.png

5. 查看pod版本

pod --version

6. 查找第三方库

输入pod search AFNetworking,则能查找到相应第三方库,按q即可退出。如下:

FBEC6FEA-035B-4BF4-9BE5-0F05753D30AA.png

如果搜索不到,可执行如下两种方案:

image.png

解决方案一:
直接找个demo,执行pod init,生成pod文件之后,双击打开Podfile文件,随便填写一个库进去,如 pod 'SnapKit', '~> 5.0.0',然后执pod install,等这个库安装好之后,再去执行pod search xxx 命令,这时候所有库都能搜到了。

解决方案二:
1、请先进行:pod setup
2、再清空一下搜索索引,让pod重建索引:
rm ~/Library/Caches/CocoaPods/search_index.json
这是因为之前pod search的时候生成了缓存文件search_index.json
然后再次输入pod search AFNetworking进行搜索

7. 创建Podfile文件

新建一个工程,cd到工程根目录下,pod init会创建一个podfile文件,
vim Podfile,按i进入编辑模式,ESC退出编辑,然后冒号,再wq就可以退出podfile文件了。
双击podfile文件,直接粘贴第三方库内容进去,保存。
用cocoapods 导入swift 框架,必须要 use_frameworks!。
use_frameworks!使用 dynamic frameworks 来取代 static libraries 方式.

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target 'SwiftUIDemo' do
pod 'MJRefresh', '~> 3.1.15.3'
pod 'Alamofire', '~> 4.7.1'
pod 'SDWebImage', '~> 4.3.3'
end
8. 安装第三方库

pod install安装所有再podfile文件中的类库,如图

C6DE5A21-86D1-4540-AE1F-8C2BD8645A08.png

执行完成之后,工程根目录下就会出现一个.xcworkspace的文件,点击就能打开工程了。

可能遇到的错误:
1. fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed
pod install 报错

[!] Error installing ZXingObjC
[!] Failed to download 'ZXingObjC': [!] /usr/bin/git clone https://github.com/zxingify/zxingify-objc.git /var/folders/v6/439mq3hd2nxdx0lgjv96gct00000gn/T/d20210516-8148-91hem9 --template=
Cloning into '/var/folders/v6/439mq3hd2nxdx0lgjv96gct00000gn/T/d20210516-8148-91hem9'...
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

或 git clone --recurse-submodules xxx 时失败报错

remote: Compressing objects: 100% (2725/2725), done.
fatal: the remote end hung up unexpectedly5.43 MiB | 149.00 KiB/s
fatal: early EOF
fatal: index-pack failed

解决方案一:
这里贴了几种网上的解决方式 (有没有效不知道,毕竟我没用到这些方式解决)
https://www.cnblogs.com/li923/p/13277725.html
https://www.cnblogs.com/new0801/p/6175788.html
https://stackoverflow.com/questions/21277806/fatal-early-eof-fatal-index-pack-failed
解决方案二:
重新克隆一遍,就ok了。可能是网络问题(网上也有说是网络问题的)。
目前我就是用这种方式解决的。

9. 查看项目中引入库的版本号

1、打开终端,cd命令切换到项目中的Podfile.lock文件目录下(一般也就是项目根目录),
执行命令:cat Podfile.lock 即可。
2、也可以用文本方式打开 Podfile.lock 文件。


image.png


******* 扩展 *******

1、 再swift项目中引入OC库,需要创建一个桥接文件

1. command + n 选择Header File,取一个名字,比如BridgingHeader.h
2.配置桥接文件路径(路径也可以在前面加上$(SRCROOT)/作为相对路径),如图:

18830CF8-DB53-409B-88F8-E5C2AE89661D.png

2 、配置Search Paths

我们在桥接文件导入第三方库头文件的时候,发现报错,提示找不到头文件,这是因为pod的文件和桥接header文件不是在同一个目录下面,所以需要配置User Header Search Paths。
在target->Build Setting里面找到search Paths,双击User Header Search Paths后面空白的地方,设置目录的路径${SRCROOT},然后选择后面的recursive,如图:


image.png

这样,在桥接文件里就可以成功的导入第三方库的头文件了。

错误:

用Xcode10和pod1.5.3,报错
RuntimeError - [!] Xcodeproj doesn't know about the following attributes {"inputFileListPaths"=>[], "outputFileListPaths"=>[]} for the 'PBXShellScriptBuildPhase' isa.
解决方案:(https://stackoverflow.com/questions/52199554/cocoapods-with-xcode-10-runtimeerror-xcodeproj-doesnt-know-about-the-following

E97F4AC0-61EF-4A1F-808B-74E60FDA94EF.png

如果输入sudo gem install cocoapods --pre执行失败,可以输入sudo gem install -n /usr/local/bin cocoapods --pre,如下:
DABEE211-8304-4BAF-A0C2-57EAEA683B72.png

ruby官网:https://gems.ruby-china.com/

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

推荐阅读更多精彩内容

  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,662评论 3 51
  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 21,610评论 0 39
  • 9/29 23:50 转眼已度过了一月,但我仍然没从刚毕业的感觉中脱离出来,好像这都是梦。慢慢相处下来,一些事情有...
    七月飞雪阅读 219评论 0 1
  • 北风寒,北风寒,风寒人心暖。 俏佳人,情缘到,今生一世花月圆。 今朝醉,明日情,厮守一生至永恒。 北风寒,北风寒,...
    池灬鱼阅读 483评论 0 2
  • 李娟《冬牧场》 李娟给人的感觉很像三毛,知性美(?)女,异域风情,身边故事,生活情趣。 区别是,埃及撒哈拉和新疆阿...
    框框之上阅读 547评论 0 1