【ios】解决Cocoapods贼慢问题

做为一个iOS开发者,时不时就要与一些好用的框架或者库打交道,而且大多数还是国外的地址,访问相当慢,所以也就引发了一系列贼慢的问题,该篇文章就来好好总结下解决方案

一、更换gem源

// 查看现有的源

gem source -l 

我之前换过淘宝的源,在这里就会显示【 http://ruby.taobao.org/ 】

*** CURRENT SOURCES ***

http://ruby.taobao.org/

但是现在淘宝源已经不再维护了,所以需要换为目前国内还在维护的【ruby-china】,如果之前没换过则默认为【https://rubygems.org/ 】,这个是国外的,对于我们来说也是比较慢的,所以也得将其更换掉

// 移除

gem sources --remove http://ruby.taobao.org/

// 添加 ruby-china 的源

gem sources --remove https://gems.ruby-china.org/

 

 

 

二、更换pod repo源

我相信目前大部分友友的这个repo的源还是【 https://github.com/CocoaPods/Specs.git 】,因为一开始我们安装 pod 的时候执行了【pod setup】而这个是默认为我们安装的是国外的源。其实这个setup只是将CocoaPods/Specs通过git克隆到本地,所以我们也可以如此

这里需要注意一点,就是存放的位置是固定的

~/.cocoapods/repos/

如果没有这个目录请自行创建,已经有的就不用自己再去创建了

mkdir -p ~/.cocoapods/repos/

执行【pod repo】可以查看当前仓库的信息

pod repo

如果这里有多个文件夹,则会显示多条信相关息

- Type: git (unknown)

- URL:  https://github.com/CocoaPods/Specs.git

- Path: /Users/lxf/.cocoapods/repos/master

好,我们开始更换pod repo源,这里我选用国内【git.coding.net】上的Specs,也有其它国内的,需要的话自行搜索吧,这里就以coding上的Specs为例

// 将当前国外的创建移除

pod repo remove master

// 将Coding上的通过git克隆到本地并修改文件夹的名字为master

git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master

如图所示,正在下载 pod repo源【这里请大家忽略本人的网速,带宽不给力,不然咻咻咻的就搞定了】

最后需要update一下

pod repo update

* 注意点:* 在每一个项目中创建的podfile文件的第一行都要填写下面这行source命令。这个可能会面临着使用的第三方库不是最新的问题,比如gitHub上面某个第三方的库已经是3.0了,结果只能下载使用2.x的,这个自己衡量吧。当然也可以自己在Coding上面新建一个工程将CocoaPods/Specs同步到你自己的仓库然后来使用~

source 'https://git.coding.net/CocoaPods/Specs.git'

补充

// 可以暂时使用我仓库里的Specs,更新时间为:2017-6-25

https://git.oschina.net/LinXunFeng/Specs.git

如果不知道怎么弄的话就按下面这种方式去搞吧,我试了几个国内免费的仓库,只有oschina的可以将gitHub上的Specs导入成功,接下来部署公钥,点击文章按要求去做,最后执行

// 注意YourUserName要改为你自己在码云上的用户名

git clone [email protected]:YourUserName/Specs.git ~/.cocoapods/repos/master

这样的话就很快了,本人是4M小水管,所以400多k已经很不错了。这样就可以保证下载下来的第三方库是最新的!!!

 

 

三、提示 git 版本问题,更改homebrew为国内源

这个不是必须的,只做额外补充~~ 

手贱升级了一下Cocoapods,然后就提示 git 版本问题,具体情况请往下看~

升级git

在升级完Cocoapods后,不论执行什么pod命令都提示git版本问题

// 比如这些命令

pod repo  |  pod setup  |  pod install

// git版本问题,使用当前CocoaPods需要git版本在1.8.5以上

[!] You need at least git version 1.8.5 to use CocoaPods

查看当前git版本

git --version

好吧,当前git版本也是很旧了,换换换~

git version 1.8.4.2

这里我们用Homebrew来帮我们升级git。但是,这里先不急着升级,我们先把Homebrew的源换成国内的清华镜像源

cd "$(brew --repo)"

git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

// 更新本地的镜像

brew update

更新完毕会提示 Already up-to-date. 接着再更新git就好了

brew install git

解决报错问题

Error: Another active Homebrew update process is already in progress.

Please wait for it to finish or terminate it to continue.

Warning: git 2.13.1 is already installed, it's just not linked.

You can use `brew link git` to link this version.

这里按它要求一步步操作即可

四、pod repo update的理解

1.问题:

三个人共同维护一个项目时,Podfile也是共同维护一份。有一天一个人,升级了Podfile中某个库的版本,比如SnapKit升级到了4.0.0, pod ‘SnapKit’, ‘~> 4.0.0’。然后,你更新了最新的Podfile,跑了一下pod install

为了解决这个异常可能尝试一下:

(1)是不是Podfile和Podfile.lock 文件不同步?删掉.lock文件再pod install一次,仍然报错。

(2)是不是SnapKit没有4.0.0版本?pod search snapKit一下,版本存在。

如果被我猜中了,证明你把焦点放在了异常前三行,而忽略了最关键的信息:None of your spec sources contain a spec satisfying the dependencies: SnapKit , SnapKit (= 4.0.0)。

这句话的意思是说:你spec资源中不包含SnapKit的4.0.0的配置信息。这里面有个关键词,spec资源和配置信息。

2、pod repo update

简单来说,pod repo update命名是用来更新本地cocoapods的spec资源配置信息。

安装完cocoapods后,在用户根目录下有个隐藏文件夹,/Users//.cocoapods,里面是cocoapods收录的所有库的配置信息,

/Users//.cocoapods/repos/master/Specs/。

比如SnapKit,内部分版本包含多个文件夹,每个文件夹内包含一个配置文件,比如SnapKit.podspec.json。

报错的原因就是,Podfile中SnapKit的版本更新到了4.0.0但是本地.cocoapods下找不到相应的配置文件

然后按照提示,执行pod repo update,这个执行之后非常慢.pod repo update实际是更新整个.cocoapods下的所有库.

附带一张 cocoapods 结构图 

猜你喜欢

转载自blog.csdn.net/dangbai01_/article/details/84030355