如何在更新 cocoapod 时避免此 ruby 非法指令错误?

How can I avoid this ruby illegal instruction error when updating a cocoapod?

tldr: Ruby 在我尝试更新我的 pod 时报告非法指令,可能是因为我使用了它的两个不同版本。

我不确定我的问题是什么,如果有帮助,我很乐意添加更多信息。

我得到了一个新的 M1 Pro Mac,并且一直在尝试让一个 XCode 项目(一个 iOS 应用程序)来处理它。它很乐意为我的 phone 构建,但无法为模拟器构建。基于 ,我尝试更新 cocoapods,然后更新我用于项目的 pods(一些 Google Firebase pods)。当我 运行 pod update 时,我得到以下结果:

Update all pods
Updating local specs repositories
/Library/Ruby/Gems/2.6.0/gems/ethon-0.15.0/lib/ethon/curls/classes.rb:36: [BUG] Illegal instruction at 0x0000000100224000
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]

随后是数百行报告 (saved here). It also saves a diagnostic report (here)。我认为这两个都是转移注意力的问题,但我想将它们包括在内以防万一。

我猜测问题是库是 2.6.0,而 ruby 本身是 2.6.8 版。这两个都是旧的,而且它们也是不同的版本。我尝试更新 ruby、gem 并重新安装 cocoapods,但其中 none 更改了这些版本号。如果您能帮助我们更新这些版本,我们将不胜感激。

对于这样一个间接的问题,我深表歉意;如果我更确定问题出在哪里,我可能会解决它。

我认为问题是我新更新的 ruby 版本没有被复制到我的自制程序路径。这个命令(from this answer)终于解决了!

PATH=/usr/local/opt/ruby/bin:$PATH
GEMSDIR=$(gem environment gemdir)/bin
PATH=$GEMSDIR:$PATH
export PATH

如果您使用的是 M1 芯片,请通过 gem 卸载 cocoapods 软件包(sudo gem uninstall cocoapods)并使用自制软件重新安装(brew install cocoapods),这解决了我的问题。