CocoaPods安装与使用(2020年重要更新)

请根据更新记录(有分割线)有选择的阅读本文。


本文于2020年4月25更新。

1.起因:

更新CocoaPods到1.9.1后,当天使用一切正常,CDN速度就是快,还沉浸在新版带来便利的喜悦中,结果第二天就受挫了,使用pod search搜索框架时出错:
[!] CDN: trunk Repo update failed - 5 error(s): CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/b/e/8/SVProgressHUD/0.7/SVProgressHUD.podspec.json Response: Timeout was reached

2.分析(未找到原因)
简易结构

画了如上CocoaPods简易结构图(不准确),可以了解1.8以后不再像以前那样下载master庞大的库源,而是使用CDN技术默认trunk库源。
造成pod search搜索出问题可能是网络连不上(具体原因不详),要不使用代理,要不继续使用旧版CocoaPods,下面是新版却使用旧版master库源方式暂时解决问题的方法。

3.解决
  • 步骤1:恢复master为默认库源。
cd ~/.cocoapods/repos #进入库源路径
pod repo remove master #移除旧master库源
git clone https://github.com/CocoaPods/Specs.git master #克隆到本地(费时)
pod repo remove trunk #移除trunk库源

其中第三句可以使用清华的镜像或许速度更快一点:

git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master 
  • 步骤2:在 Podfile 文件顶部指定源地址。
source 'https://github.com/CocoaPods/Specs.git'
# source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'

注:如果没有在 Podfile 里指定 source 的话,1.8 版本以上的 CocoaPods 会自动重新添加并使用 trunk CDN 源,使用pod search搜索可能会出问题了,因此每个项目的 Podfile 都需要显式指定 source。


本文于2020年4月24日更新。

主要是Cocoapods 1.8.0(使用CDN提速)和1.9(支持XCFrameworks)重要更新,强烈建议升级,终端执行

  • sudo gem install cocoapodssudo gem install cocoapods -n /usr/local/bin
  • 不需要pod setup,直接使用。同时可以删除以前的库源pod repo remove master来释放空间(你懂的,mac电脑最缺)。

具体介绍参考上部链接。


本文于2019年9月更新(初稿),如果过期,请参考其他文章。

1.为什么要使用CocoaPods

CocoaPods:基于Ruby的iOS第三方库管理的工具。
如iOS编程时会使用别人已实现的功能代码(即第三方库),每次手动导入这些库和依赖比较麻烦,而CocoaPods解决这方面的问题。

2.如何安装CocoaPods

安装CocoaPods需要Ruby环境(一种跨平台脚本语言),macOS自带的Ruby环境可能过低需要升级,而Ruby是由RVM(即使Ruby Version Manager)管理的,因此需要先安装RVM。以下指令在Terminal终端执行。

3.安装RVM

  • rvm -v 显示RVM版本,没有安装RVM会提示不存在。
  • curl -L https://get.rvm.io | bash -s stable 下载安装RVM。
  • source ~/.rvm/scripts/rvm 初始化RVM。
  • rvm -v 检查版本(同上)。
安装RVM

4.安装Ruby

  • ruby -v 检查Ruby版本,低于2.2.2时安装CocoaPods会报错。
  • rvm list known 查询所有的Ruby版本,推荐最新版。
  • echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > ~/.rvm/user/db替换 RVM 的配置信息(使用速度更快的国内镜像)
  • rvm install 2.6.4 --disable-binary 下载安装Ruby2.6.4版(忽略二进制)。注意此过程会检查有没有安装Homebrew(基于Ruby语言的macOSX系统级的软件包管理器)并自动帮你安装(如果安装不成功会有Requirements installation failed with status: 1提示,请参考附录2。
  • rvm list 查看Ruby版本,是否安装成功。
安装Ruby

5.更改下载源

CocoaPods的Ruby软件包是由RubyGems管理的,为了国内能用gem更快下载安装CocoaPods需要更换下载源(如果已更换可忽略)。

  • sudo gem update --system 更新RubyGems升级成功后会提示:RubyGems system software updated
  • gem sources -l 显示源(根据情况移除所有国外源添加国内源)
  • gem sources --remove https://rubygems.org/ 移除国外源
  • gem sources -a https://gems.ruby-china.com/ 添加国内源

6.安装CocoaPods

  • sudo gem install -n /usr/local/bin cocoapods 安装CocoaPods(macOS10.11以下系统使用sudo gem install cocoapods)
  • pod setup初始化本地库,注意如果该句无效时(如下图没反应)应更换下面等价的语句git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master
  • pod search AFNetworking测试搜索第三方框架
安装CocoaPods

7.终端方式使用CocoaPods

  • 终端使用cd指令进入Xcode所创建项目文件夹下。
  • 搜索第三方框架,如pod search afnetworking,显示内容过多时可以通过上下键滚动,q键退出。
  • 创建Profile文件,如pod initvim Podfile(推荐)
  • 编辑Profile文件,如vim Podfileopen Podfile后编辑内容如下图(关于vim编辑器使用方法可自行学习)。
  • 安装框架pod installpod install --no-repo-update(后者不更新本地库速度快)
  • 打开项目文件夹下的xcworkspace文件,即可import<AFNetworking.h>方式导入该第三方框架头文件使用了。
使用CocoaPods

8.卸载CocoaPods

终端执行sudo gem uninstall cocoapods即可卸载。

9.Xcode插件方式使用CocoaPods


附录一、参考文章

1.《iOS开发----cocoapods的那些事儿》

2.《CDN,CocoaPods 1.8.0 最完美的升级》

3.《解决 CocoaPods trunk CDN 连接不上的问题》


附录二、CocoaPods常见错误

建议搜索查找,快捷键command+f或control+f

1.pod setup没反应、出错、或提示Unable to find a pod with name, author, summary, or description matching

  • 解决方法1:执行git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master代替pod setup
  • 解决方法2:先rm ~/Library/Caches/CocoaPods/search_index.json再执行pod setup

2.pod search搜索时没反应或提示CDN: trunk - Cannot perform full-text search because Algolia returned an error: 0: Cannot reach any host: execution expired, execution expired, execution expired, execution expired需要指定搜索源,具体步骤如下()。

  • podfile文件中指定source源为master:source 'https://github.com/CocoaPods/Specs.git'
  • 移除trunk源:终端执行pod repo remove trunk

3.pod install时提示Couldn't determine repo type for URL: 'https://github.com/CocoaPods/Specs.git': execution expired
Cocoapods 1.8.0以后使用CDN大幅提升pod update速度具体参考本文上部。

待补充....

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

推荐阅读更多精彩内容