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速度具体参考本文上部。

待补充....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容