iOS开发整理666iOS高级文章

解决CocoaPods下载、更新repo缓慢问题

2018-03-01  本文已影响642人  翻炒吧蛋滚饭

前言

  CocoaPods在首次安装后,不管是search、install还是update,都会强制的升级他的repo,按我的理解,这个repo起到了CocoaPods在本地缓存索引的作用,比如我们进行pod search的时候,实际是在本地进行检索的,这个repo是git上的一个仓库,由CocoaPods官方创建,地址如下:https://github.com/CocoaPods/Specs,存放了CocoaPods支持的各种三方库的信息,每次在执行pod search的时候,首先CocoaPods会主动的pull这个git,确保本地的索引信息是最新的,然后再在本地repo中进行搜索,以保证加载的速度。
  由于这了git库保存个CocoaPods支持的所有三方库的信息,所以在第一次pull这个git库的时候,那是相当漫长的,加上git服务器在国外,对于国内的小伙伴就更是难上加难了。我就因为下载不下来,导致一直没法用CocoaPods(电脑重装系统,重新安装了CocoaPods,所以repo都没了),都影响自己学习新知识了(扯,就没见你怎么学习过!)。同时网上找了很多解决方案,都不完美,所以这里将我的经验贴出来,有碰到类似问题的朋友,可以参考我的文章,少走弯路。

关于CocoaPods的repo

  repo,全称是Repository,顾名思义就是仓库的意思,当然就是git托管的仓库了。上面说过CocoaPods通过这个repo里的信息来获取各种三方库的信息,那么我们先来看看安装完CocoaPods后,首次进行search、install、update,都会有什么效果吧。
  我们以搜索一个三方库为例,在终端中执行pod search AFNetworking,你会发现终端中出现如下信息:

更新repo
  针对三处红线标识的解释:1、更新CocoaPods的master repo;2、从https://github.com/CocoaPods/Specs 这个地址上克隆repo到本地;3、下载git上的repo,需要下载的文件有1963451个,也就是190万个。
  我试了公司的网络、家里的网络、挂vpn、不挂vpn、手机开热点。。。最后都没更新成功。190万个文件啊,太多了点吧!
  那么既然CocoaPods需要将一个git仓库克隆到本地,我们是否可以自己帮CocoaPods创建本地仓库呢?答案是可以的。我们找到CocoaPods存放repo的地方。终端输入open ~/.cocoapods/repos,就打开了repo存放的路径。
repo路径
  网上的解决方案一般都是告诉你去换一个国内镜像去pull git,但国内的git镜像也不靠谱,过时的、速度慢的,还是很难更新成功,那么我提供一下我的解决思路:
1、将https://github.com/CocoaPods/Specs下载到本地,放入repos文件夹。
2、将本地的文件,与https://github.com/CocoaPods/Specs关联,让CocoaPods识别本地仓库是从git上pull下载的。

解决方法

  首先去https://github.com/CocoaPods/Specs下载zip文件:

image.png
  将下载的zip解压,解压出来的目录结构如图:
image.png
  将所有解压出来的文件放入.cocoapods/repos/master文件夹中,放置后效果如下:
image.png
  然后cd到Specs目录:
cd ~/.cocoapods/repos/master/Specs

  先初始化git:

git init

  然后关联仓库:

git remote add origin https://github.com/CocoaPods/Specs

  查看我们的repo是否正常,终端输入:

pod repo

  会看到如下信息,一个名为master的repo,本地路径、git地址,都是我们所预期的:

image.png
  最后我们试下pod search pod install,都可以正常使用了:
image.png

--no-repo-update

  运行pod update,会发现仍会让我们更新repo,这里可以通过执行pod update --verbose --no-repo-update达到不更新repo的效果。
  我们有时pod search一个三方库,但却搜不到这个三方库的最新版本的时候,也可能是因为repo没有更新导致的,只要去gitHub找到想用的三方库,找到最新版本号,写在Podfile中,然后直接pod update就好了。以后自己想更新repo了,还是可以通过手动下载的方式进行替换,如果网络好,也可以直接pod update,让CocoaPods自己更新repo,只要能让我们首次安装CocoaPods后快点用起来,不被首次CocoaPods更新repo卡住耽误了时间就好(要不是我被这个问题卡了一下午加一个晚上的休息时间,也不会写这篇教程!希望大家不要再走我的弯路了)。
  最后想说,我对CocoaPods的理解也不是很深刻,仅针对今天碰到的问题提出自己的见解和解决方案,如有什么错误的地方,还请大神指正,多谢。

上一篇下一篇

猜你喜欢

热点阅读