IOS开发iOS--开发技巧iOS 干货整理

CocoaPods安装中的几个小问题

2016-07-06  本文已影响3188人  庸者的救赎

最近换新电脑了,在安装cocoapods的时候遇到了一点儿麻烦,特此记录

1.查看你的ruby

gem sources -l

输入上面的命令以后,你会得到一下结果

*** CURRENT SOURCES ***

https://rubygems.org/

这一步是切换ruby的镜像源,mac默认的源地址是rubygems.org,但是这个地址在天朝是不能用,好在咱们有万能的淘宝

update - 2016-11-28:现在淘宝的镜像不维护了,改用https://gems.ruby-china.org

2.切换ruby源到ruby-China

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

3.安装cocoapods

sudo gem install -n /usr/local/bin/cocoapods

如果你的系统低于10.11版本,可以使用一下命令

sudo gem install cocoapods

在这一步很可能会出现下面这么一个恶心的东西:

activesupport requires Ruby version >= 2.2.2

他告诉你,想要安装cocoapodsruby的版本必须高于2.2.2,那么就只能升级ruby,命令如下:

sudo gem install activesupport -v x.x.x 
// 后面的版本号只要高于2.2.2就行了

这个时候,你再去运行上面的安装命令,就可以成功安装的,有些同学使用WiFi来安装,有时候网络不稳定,可能会等的比较久,耐心等待就好了

update 2017.2.13
等你修改或者升级好了gem版本以后,你还可能遇到下面这种问题

fuzzy_match错误
fuzzy_match库安装错误,简直不能忍了,一步步的折磨人...
这个问题是因为路径问题,你只需要指定match的安装位置就行了
改换成下面👇这条命令
sudo gem install -n /usr/local/bin cocoapods

有的同学可能会想到另一个问题,我换了路径以后,之前安装的是不是要删掉(强迫症患者),不用担心,gem会复用之前装好的东西的。

4.设置pod仓库

pod setup

这里也有一个坑,那就是当你输入这个命令的时候,会出现这样几个提示:

Setting up CocoaPods master repo
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master

Cloning into 'master'...
error: RPC failed; curl 56 SSLRead() return error -36
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

而且一片红色,很让人心火大。其实呢,第一次使用setup命令的时候并不会出现这样的东西,但是有人不能等或者等了好久觉得可能不行了,然后关掉窗口,终止了,这样你以后打开窗口再次使用setup命令的时候,就会一直出现上面那几句提示。这个时候,你可以先移除之前的设置,然后找个网络比较好的地方,继续setup

sudo rm -fr ~/.cocoapods/repos/master
// 移除命令

5.测试是否安装成功

setup那一步成功以后,会出现一个绿色的Setup completed!然后使用下面命令测试是否成功.如果成功,则会直接显示一行数字版本号,那么就可以开始上手开发了...

关于如何使用,那么请出门左转,看看这篇文章,很详细的讲解了如何使用cocoapods

6.有时候cocoapods会抽风

有时候,你明明没有动过cocoapods,可他就是坏了,不能用了,比如你在执行pod install的时候可能见到过下面这种问题

[!] Unable to satisfy the following requirements:
- `Firebase/Core` required by `Podfile`
None of your spec sources contain a spec satisfying the dependency: `Firebase/Core`.

You have either: 
* out-of-date source repos which you can update with `pod repo update`.
* mistyped the name or version. 
* not added the source repo that hosts the Podspec to your Podfile.

Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default.

看到这么火红的一片错误,你甚至连把这些信息看完的心情都没有,更别说还是英文的(好吧,无意中透露了什么东西😜)...

而且,这个问题更诡异的地方在于,你在Podfile里面导入的相应版本库,他找不到,我擦~~~
github上明明已经更新到某个版本了,你就是从README里面copy出来的,你坚信自己只按了Ctrl + C -> Ctrl + V,难道cocoapods出轨了?WTF?

这个问题的原因在于,你的cocoapods太久没有更新了,以至于版本落后太多...
去更新到最新版本是你的唯一选择,执行下面这个命令来更新到最新的版本:

// 更新到最新的预览版,一次到底
sudo gem install cocoapods --pre

嗯,就是这样,此时你可以安心的放下鼠标等胜利了🙊
然而,有些同学的电脑可能还是不行,因为cocoapods在本地的缓存
莫慌,执行下面这段万能的命令:

// 移除本地master
sudo rm -fr ~/.cocoapods/repos/master
// 移除本地缓存
sudo rm -fr ~/Library/Caches/CocoaPods/
// 重新setup,如果网速较慢,可以在后面加上 --verbose
pod setup

嗯,差不多了
如果你在setup这一步等了很久,很久,很久,久......
请把该文章网上翻,看第五点

7.Swift3.0问题

又是swift3.0,最近一直在解决这个家伙的问题,各种升级
cocoapods里面它有时候也会引起问题,在你执行pod install命令的时候,会出现很长一段文字警告信息
好吧,不啰嗦了,直接上方法:

post_install do |installer| 
  installer.pods_project.targets.each  do |target| 
      target.build_configurations.each  do |config| config.build_settings['SWIFT_VERSION'] = '3.0' 
      end 
   end 
end

嗯,是的,就这么办...
如果还是不行,呃...
请出门右拐,看这篇文章

8.搜索到的库版本过低

很多时候,我们会通过search命令搜索github上的repos,找到合适的repo以后直接复制pod 'xxx'
然而这里很多时候我们搜索到的库,版本其实低于其真正的版本,因为这个搜索其实对本地缓存好的search list进行索引的,而这个索引是在安装cocospod时候的数据,期间某个repo的作者可能更新了

解决这个问题的方法就是更新本地的`list数据,命令如下:

pod repo update

9.更新pod版本问题 - update 17.06.06

有时候你收到pod的更新提示,它会告诉你使用下面命令更新

sudo gem install cocoapods

然后你就happy的copy then paste, then

ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/xcodeproj

WTF?造成这个问题的原因是,pod安装的时候没有指定路径,就被装在了默认的/bin下面,所以只需要指定路径就行了

sudo gem install -n /usr/local/bin cocoapods

当然你也可以自定义路径,之后就可以happy的使用sudo gem install cocoapods来更新

$ mkdir -p $HOME/Software/ruby
$ export GEM_HOME=$HOME/Software/ruby
$ gem install cocoapods
[...]
1 gem installed
$ export PATH=$PATH:$HOME/Sofware/ruby/bin
$ pod --version

生命不息,折腾不止...
I'm not a real coder,but i love it so much!

上一篇下一篇

猜你喜欢

热点阅读