我无法在M1 Mac上安装Pod。 sudo gem install ffi没有帮助(由rbenv引起)


环境

  • 截至2021年1月26日
  • 使用M1芯片Macbook Air
  • 终端基本上使用arm64而不使用rosetta
  • 接管本文,使Homebrew正确使用arm和intel,并使用homebrew安装rbenv

  • 使用rbenv安装2.7.2并将其设置为global
  • 在rbenv中的ruby中安装cocoapods

您遇到的问题

  • pod installl不起作用。
    →原因是本期

    中所说的

  • 即使我尝试上述文章中的解决方案,也无法使用。
    在文章中,卸载一次ffi,使用rosetta将终端切换到intel,然后说↓
    sudo gem install ffi
    日本参考文章→当CocoaPods无法在带有M1芯片的Mac(Apple Silicon)上运行时的对应

原因

  • 原因是cocoapods的安装目标是使用rbenv安装的ruby。该问题有以下评论

对于使用带有rbenv的非系统ruby并遇到ffi问题的任何人-切换到系统ruby(至少在项目目录中位于本地)并按照上述步骤进行操作有助于我

解决方案

  • 设置仅对使用xcode的目录使用系统ruby
  • 终端是使用Rosetta的英特尔
  • 安装用于系统ruby的椰壳

    • arch -x86_64 sudo gem install cocoapods
  • 同时安装ffi

    • arch -x86_64 sudo gem install ffi
  • 之后,如果您正常执行pod install,它应该可以工作。顺便说一句,使用intel完成上述过程后,当您执行pod install时,它将与arm一起使用

    • *加法(2021/02/05):毕竟,它不适用于手臂。在执行pod install时,如果像本文所述进行了设置,则需要使用switch-arch切换到Intel。
    • 顺便说一下,您可以通过执行uname -m来确定当前终端是arm还是intel

印象数

  • 为什么我放入rbenv的cocoapods不起作用?

似乎原因是库

→ffi不支持arm。由于rbenv支持arm,因此在opt/homebrew/下安装了在rbenv的arm版本中安装的ruby。因此,如果我把可可豆放在这里不行吗?我不确定
-将可可豆放入系统的ruby中感觉有点不舒服。如果您不想污染环境,那么我想尽可能地完成rbenv中的所有内容。

→大多数文章在操作吊舱时都使用sudo,那么将可可豆吊舱首先放在系统的ruby中是常识吗? ?? (在装有rbenv的ruby上安装时不需要sudo)

  • 在开发iOS时忘记将ruby切换到系统