我有一个Flutter项目,我试图在iOS上运行。它在我那台基于英特尔(intel)处理器的Mac电脑上运行正常,但在我那台基于苹果(Apple) silicon芯片的M1新Mac电脑上却无法安装pod。

LoadError - dlsym(0x7f8926035eb0, Init_ffi_c): symbol not found - /Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi.rb:6:in `rescue in <top (required)>'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi.rb:3:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ethon-0.12.0/lib/ethon.rb:2:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/typhoeus-1.4.0/lib/typhoeus.rb:2:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/sources_manager.rb:74:in `cdn_url?'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/sources_manager.rb:36:in `create_source_with_url'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/sources_manager.rb:21:in `find_or_create_source_with_url'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:178:in `block in sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:177:in `map'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:177:in `sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1073:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1072:in `resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:124:in `analyze'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:414:in `analyze'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:239:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:238:in `resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:160:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command/install.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'

基于Github的解决方案,我尝试使用rosetta运行Terminal,但问题仍然相同:https://github.com/CocoaPods/CocoaPods/issues/9907#issuecomment-655870749

意识到苹果芯片的mac电脑还为时过早。有没有办法暂时解决这个问题?


当前回答

我的新MacBook Air M1也遇到了同样的问题,因为M1有不同的架构,我们应该安装带有罗塞塔翻译环境的软件包。

您可以通过使用rosetta解决大多数兼容性问题。

解决步骤:

打开查找器/应用程序 复制您的终端 右键单击新终端并选中复选框 [x]开放使用

然后用这个终端安装包

其他回答

这对我来说很有用,试着在Mac M1上创建应用

首先进入你的应用程序文件夹

选择终端应用程序->获取信息->选择运行rosseta

//如果你试图通过xcode构建应用程序 对xcode应用重复上述步骤

注意:在这样做时,请确保您的终端和代码是关闭的。

现在运行终端切换到project_folder/ios

运行以下显示的命令

sudo gem install cocoapods

sudo gem install ffi

sudo arch -x86_64 gem install ffi

现在有一个“更好/更容易?”的方法来使用自制软件,如果你已经安装了自制软件,只要运行就可以了

brew install cocoapods

这将安装ruby和利比亚aml作为先决条件,到目前为止,这是最直接的方法(也是最有可能被推荐的方法)。

基本上尝试了这里列出的所有解决方案。

$ arch -arm64 brew install cocoapods

终于为我做到了。

在此之前,请确保正确安装了homebrew,并以/opt/homebrew为前缀。这篇文章在这方面提供了很好的说明。

编辑:另一种选择是删除所有flutter和dart文件,只使用自制软件完成安装过程,如下所示。我在M1 Pro上也是这样。

我已经为这个解决方案为cocoapods安装。

基本上有两种方法来安装可可豆荚。

1. 通过Homebrew安装cocoapods:

brew install cocoapods

2. 通过gem安装cocoapods:

sudo gem install ffi

如果你遇到苹果M1或苹果M2芯片的问题

罗塞塔的第一个终端

右键单击终端应用程序并选择op。 右键点击应用程序,选择“获取信息”。 选中“用Rosetta打开”选项。

您可以执行以下命令:

sudo arch -x86_64 gem install ffi

一旦安装完成,请尝试以下命令:

arch -x86_64 pod install

Mac M1将于2021年9月开始工作

我只是想补充Medhi的答案,在iOS文件夹中的同一终端中进行“pod repo更新”,因为这对我来说是关键的修复错误。

以下是完整的待办事项清单:

在Utilities文件夹中复制终端应用程序。 右键点击应用程序,选择“获取信息”。 重命名应用程序的其他版本,如你所愿。 选中“用Rosetta打开”选项。 使用sudo gem Install Cocoapods命令安装Cocoapods 输入命令行sudo gem install ffi来修复ffi bundle问题。 在同一终端进入应用程序的iOS文件夹 pod回购更新吗 现在您可以毫无问题地进行pod安装。