macOS BigSur下安装CocoaPods失败,Flutter项目无法运行
问题描述
环境信息:
- macOS BigSur 11.7.10
- Xcode 13.2.1
- Ruby 2.6.10p210
- Flutter 3.7.0
- Dart 2.19.0
- DevTools 2.20.1
执行以下命令安装CocoaPods时失败:
sudo gem install cocoapods
或
sudo gem install cocoapods -v 1.11.3
错误提示为gem原生扩展构建失败,需先安装开发工具。由于CocoaPods未安装,Flutter项目无法在iPhone 12 Pro上启动。已尝试brew安装、启动命令行工具、打开Android Studio等方法,问题仍未解决。
安装CocoaPods的错误日志(中文翻译)
imacpro1@192 ~ % sudo gem install cocoapods -v 1.11.3 密码: 正在获取 cocoapods-downloader-1.6.3.gem 正在获取 cocoapods-core-1.11.3.gem 正在获取 zeitwerk-2.6.12.gem 正在获取 activesupport-6.1.7.6.gem 正在获取 cocoapods-1.11.3.gem 成功安装 cocoapods-downloader-1.6.3 正在构建原生扩展,这可能需要一段时间... 错误:安装cocoapods失败: 错误:gem原生扩展构建失败。 当前目录:/Library/Ruby/Gems/2.6.0/gems/ffi-1.16.3/ext/ffi_c /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20231205-636-1vxfozq.rb extconf.rb *** extconf.rb 执行失败 *** 由于某些原因无法创建Makefile,可能缺少必要的库和/或头文件。查看mkmf.log文件获取更多详情,你可能需要配置选项。 提供的配置选项: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/$(RUBY_BASE_NAME) --with-ffi_c-dir --without-ffi_c-dir --with-ffi_c-include --without-ffi_c-include=${ffi_c-dir}/include --with-ffi_c-lib --without-ffi_c-lib=${ffi_c-dir}/lib --enable-debug --disable-debug --enable-system-libffi --disable-system-libffi --with-libffi-config --without-libffi-config --with-pkg-config --without-pkg-config /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:467:in `try_do': 编译器无法生成可执行文件。(RuntimeError) 你必须先安装开发工具。 来自 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:546:in `block in try_link0' 来自 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/tmpdir.rb:93:in `mktmpdir' 来自 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:543:in `try_link0' 来自 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:570:in `try_link' 来自 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:672:in `try_ldflags' 来自 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:1832:in `pkg_config' 来自 extconf.rb:9:in `system_libffi_usable?' 来自 extconf.rb:46:in `<main>' 要查看扩展编译失败的原因,请查看位于以下路径的mkmf.log文件: /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-20/2.6.0/ffi-1.16.3/mkmf.log extconf执行失败,退出码1 Gem文件将保留在 /Library/Ruby/Gems/2.6.0/gems/ffi-1.16.3 以供检查。 结果已记录到 /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-20/2.6.0/ffi-1.16.3/gem_make.out imacpro1@192 ~ %
Flutter项目启动错误日志(中文翻译)
正在以调试模式在iPhone 12 Pro上启动lib/main.dart... 警告:未安装CocoaPods,跳过pod安装。 CocoaPods用于获取iOS和macOS平台侧的插件代码,以响应你在Dart侧的插件使用。 没有CocoaPods,插件将无法在iOS或macOS上工作。 CocoaPods未安装或状态无效。 在iPhone 12 Pro上启动应用失败。
解决方案
1. 重新安装Xcode命令行工具
执行以下命令彻底清理并重新安装命令行工具:
sudo rm -rf /Library/Developer/CommandLineTools xcode-select --install
安装完成后,运行xcode-select -p验证路径,输出应为/Library/Developer/CommandLineTools。
2. 用rbenv管理Ruby环境(绕过系统Ruby权限问题)
- 安装rbenv:
brew install rbenv
- 初始化rbenv到shell:
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc source ~/.zshrc
- 安装指定Ruby版本并设置全局:
rbenv install 2.6.10 rbenv global 2.6.10
- 无sudo安装CocoaPods:
gem install cocoapods -v 1.11.3
3. 直接通过brew安装CocoaPods
如果上述方法仍失败,直接用brew绕过Ruby原生扩展问题:
brew install cocoapods
安装后执行pod setup同步仓库,再到Flutter项目的ios目录运行:
cd ios pod install
4. 验证安装状态
运行pod --version确认CocoaPods版本正确,之后重启Flutter项目即可。
内容的提问来源于stack exchange,提问作者ARPIT PATEL
相关产品推荐
相关产品推荐

