解决这个问题其实已经有一段时间了,但最近换了一台电脑又遇上了同样的问题,重新把资料又查了一遍......
为了避免再次出现这种拍断大腿的事情,这里把原因,解决思路和步骤都记录一遍,以供自己查询和大家参考。
原因
先看错误:
Xcode14:
proj] Unknown object version (56). (RuntimeError)
11: from /Users/xxx/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `'
10: from /Users/xxx/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:24:in `eval'
9: from /Users/xxx/.rvm/gems/ruby-2.7.0/bin/pod:23:in `'
8: from /Users/xxx/.rvm/gems/ruby-2.7.0/bin/pod:23:in `load'
Xcode14.1
Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
Analyzing dependencies
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/user_interface/error_report.rb:34:in `force_encoding': can't modify frozen String (FrozenError)
实际的原因就是Ruby
的版本低了,我们都知道CocoaPods
是用Ruby
写的,那这里我们就需要去升级Ruby
的版本,升级Ruby
的版本需要先安装RVM
......
解决思路
OK ,由此我们得出
pod install
失败的原因:masOS系统自带的Ruby
版本过低
解决方案:手动升级Ruby
版本(这里是升级到目前的最新版本3.0.0)
步骤
1.安装RVM(Ruby Version Manager)
1.1:命令行安装
curl -L get.rvm.io | bash -s stable
如果收获如下报错:
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 3 ms: Connection refused
不要慌,原因不可描述,If you know, you know。
方案一:打开你的梯子,如果还是报错,那么请看方案二
方案二:如果开了梯子也没有用,那么可能就是域名解析也被污染了,我们就只有去修改主机文件了,也就是host文件
,把某个域名强制解析到固定的IP。命令就不水字数了,常用vim
的同学肯定都会,不常用的打开了你也不一定会退出。有兴趣的自己Search即可。这里推荐一个好用的工具SwitchHosts
。他在Github
上开源,直接下编译好的安装包即可:https://github.com/oldj/SwitchHosts/releases
现在我们需要拿到raw.githubusercontent.com
这个域名的IP,可以通过这个网站查询https://www.ipaddress.com。
目前它的IP是199.232.68.133
,在host中添加如下内容:
199.232.68.133 raw.githubusercontent.com
然后继续执行RVM
的安装命令即可,如果超时就多执行几次,如果下载比较慢就稍等。
1.2:配置RVM
环境变量
安装完成后,你在终端会看到两句提示:
To start using RVM you need to run `source /Users/你的电脑用户名/.rvm/scripts/rvm`
in all your open shell windows, in rare cases you need to reopen all shell windows.
意思是你要先执行source /Users/你的电脑用户名/.rvm/scripts/rvm
,然后重启终端。(Tips:如果不想重启,直接刷新环境变量即可source ~/.bash_profile
。如果你还没有.bashrc|.bash_profile|.profile|.zshrc
这些文件中的任意一个,那么需要先创建,请自行Search)
查看RVM
版本号,如果成功执行,意味着已经安装成功。
rvm -v
2:升级Ruby
查看Ruby
的最新版本(目前是3.0.0)
rvm list known
安装查到的最新版本
rvm install 3.0.0
下载完成后查看是否安装成功
rvm list
看到最新的版本(目前是3.0.0)即为成功,然后切换默认版本为 3.0.0.
rvm use 3.0.0 --default
执行 rvm list
查看一下是否切换成功,看到如下结果即算成功。
=* ruby-3.0.0 [ x86_64 ]
# => - current
# =* - current && default
# * - default
3:重新下载CocoaPods
切换了Ruby
,所以要重新下载CocoaPods
查看本地已安装的CocoaPods
版本
gem list --local | grep cocoapods
重新安装CocoaPods
sudo gem install cocoapods
再执行一下gem list --local | grep cocoapods
,如果看到pod版本已经是最新的就已经OK。
cocoapods (1.11.3)
cocoapods-core (1.11.3)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.6.3)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.1)
cocoapods-trunk (1.6.0)
cocoapods-try (1.2.0)
到这里就升级结束,可以去正常使pod
。如果有遇上其他报错的,可以私信。