CocoaPods升级到1.8+版本,执行update报错问题

前言

有很多小伙伴的反馈:CocoaPods在升级1.8+版本之后,执行searchinstallupdate等操作时会报类似于下面这种错误:

1
2
[!] CDN: trunk Repo update failed - 17 error(s):
CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/1/d/4/CocoaAsyncSocket/0.0.1/CocoaAsyncSocket.podspec.json, error: Operation timed out - SSL_connect

其实这个是由于:CocoaPods1.8版本之后,把 CDN 被作为spec的默认仓库来源所导致的。

什么是CDN

CDN 的全称是 Content Delivery Network,即内容分发网络CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。

以上是《百度百科》对于CDN 的定义。简而言之,CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。

CocoaPods使用了CDN有什么好处?

  • 1.8版本以前:

    pod setup会把 https://github.com/CocoaPods/Specs.gitmaster分支,全量下载到~/.cocoapods/repos/master中,每次pod update都回去更新这个分支,由于这个仓库很大,再加上网络请求本来就慢,常常耗费很长时间。

  • 1.8版本以后:

    使用CDN分发,直接找到三方库的spec地址,直接下载。 所以,不再需要全量下载 https://github.com/CocoaPods/Specs.git 到本地。如果你已经升级到了1.8+版本,repo master就没有用了,终端输入:

    1
    pod repo remove master

    清理出宝贵的硬盘空间。

解决办法

修改hosts文件,添加指定ip。终端输入:

1
sudo vi /etc/hosts

会要求输入系统密码,之后hosts文件就自动打开了。进入编辑模式,在hosts文件中添加:

1
199.232.4.133 raw.githubusercontent.com

保存退出之后,就可以正常使用CocoaPods了。

另外,看到很多解决办法是说:在Podfile文件中指定source源:

1
source 'https://github.com/CocoaPods/Specs.git'

然后:

1
pod repo remove trunk

这种方案虽然可行,但是又回到了老版的方式了,缺点在上面已经说了,除非修改hosts文件的办法不好用了,否则不太建议。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2021 bestdew
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信