研究CocoaPods - 源码调试环境搭建时发现Ruby都已经到了3.2.1版本了,电脑上的RVM还是只能安装3.0.0版本。因为安装Ruby最新版本的过程中遇到了一些问题,所以这里记录一下安装过程。如果你连RVM都还未安装,可以参考这篇文章iOS问题记录 - CocoaPods is installed but broken(续)安装。
当前默认安装的RVM版本最高只支持Ruby 3.0版本,如果想要支持更高的Ruby版本,需要执行命令切换分支版本:
rvm get master
切换成功后执行命令:
rvm list known
输出(省略部分):
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.10]
[ruby-]2.5[.9]
[ruby-]2.6[.10]
[ruby-]2.7[.7]
[ruby-]3.0[.5]
[ruby-]3.1[.3]
[ruby-]3[.2.1]
ruby-head
...
可以看到现在已经支持安装Ruby 3.1和3.2版本。rvm list known
命令所输出的内容存放在~/.rvm/config/known
文件,每当Ruby有新版本时,都会修改这个文件,可以参考RVM开源项目提交记录中的Add Ruby 3.2.1 。
注意:master
分支版本不是稳定版,可能会有一些bug,如果想恢复到原来的稳定版,执行rvm get stable
命令切换回稳定版即可。
安装命令:
rvm install ruby-3.2.1
不出意外的话,执行后应该能安装成功,但是,出意外了,报错如下:
Error running ' CFLAGS=-O3 ...',
please read /Users/xxx/.rvm/log/1679388668_ruby-3.2.1/configure.log
There has been an error while running configure. Halting the installation.
安装命令换成这个:
rvm install 3.2.1 --with-openssl-dir=`brew --prefix openssl`
参考自这个issue。
安装成功后执行命令:
rvm list
输出:
* ruby-3.0.0 [ arm64 ]
=> ruby-3.2.1 [ arm64 ]
# => - current
# =* - current && default
# * - default
可以看到默认Ruby版本不是最新的,虽然当前Ruby版本是最新版本,但是随便新开一个命令行窗口后,当前和默认的Ruby版本都是3.0.0,这时需要设置一下默认Ruby版本。
设置默认Ruby版本命令:
rvm use 3.2.1 --default
到此,当前最新的Ruby版本就安装完成啦!
切换Ruby版本后,要注意:
例如切换版本前已经用Android Studio打开了Flutter项目,切换完成重新安装CocoaPods后运行报错:
Warning: CocoaPods is installed but broken. Skipping pod install.
You appear to have CocoaPods installed but it is not working.
This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
This can usually be fixed by re-installing CocoaPods.
To re-install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
CocoaPods not installed or not in valid state.
完全退出Android Studio后重新打开恢复正常。
如果你同时有在使用CocoaPods,且版本低于1.12.0,那么可能会遇到这样的报错:
NoMethodError - undefined method `=~' for xxx
这是Ruby 3.2版本做了些改动导致的问题,如果你想要在Ruby 3.2或更高版本正常使用CocoaPods的话,CocoaPods必须升到1.12.0或更高版本。
参考:
如果这篇文章对你有所帮助,请不要吝啬你的点赞加星,谢谢~