M1 Mac上Flutter 2.6的CocoaPods与Ruby兼容问题(pod install失败)
针对Flutter老项目环境配置问题的解决方案
1. 在M1 Mac上安装Ruby 2.7.5(绕过OpenSSL 1.1废弃限制)
Homebrew官方已禁用openssl@1.1,可通过以下两种方式解决:
- 方法一:用OpenSSL 3兼容安装
Ruby 2.7.5可适配OpenSSL 3,执行以下命令:
若安装失败,可给ruby-build打兼容性补丁:# 安装依赖 arch -arm64 brew install openssl@3 readline libyaml gmp zlib # 配置编译参数指向OpenSSL 3 export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)" # 安装Ruby 2.7.5 rbenv install 2.7.5curl -fsSL https://github.com/rbenv/ruby-build/pull/2148.patch | patch -d "$(rbenv root)"/plugins/ruby-build -p1 rbenv install 2.7.5 - 方法二:使用第三方Tap获取openssl@1.1
第三方源仍保留openssl@1.1,执行:arch -arm64 brew install rbenv/tap/openssl@1.1 export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix rbenv/tap/openssl@1.1)" rbenv install 2.7.5
2. CocoaPods 1.11.3与Ruby 3.3.6兼容吗?
不兼容。CocoaPods 1.11.3是2021年版本,内部使用了Ruby 3.0+已移除的File.exists?方法,无法适配Ruby 3.x系列,必须降级到Ruby 2.7.x或更低版本(2.6-2.7均可)。
3. 解决pod install时的undefined method 'exists?' for class 'File'错误
错误根源是Ruby与CocoaPods版本不兼容,按以下步骤修复:
- 按问题1的方法安装Ruby 2.7.5
- 切换到该Ruby版本:
# 仅在当前项目目录生效 cd 你的Flutter项目根目录 rbenv local 2.7.5 # 或全局生效(可选) rbenv global 2.7.5 - 重新安装对应版本的CocoaPods:
gem uninstall cocoapods --all gem install cocoapods -v 1.11.3 - 清理Pods并重新执行安装:
cd ios pod deintegrate rm -rf Pods Podfile.lock pod install
4. 是否无需修改代码库即可运行项目?
可以。所有问题均为环境依赖版本不匹配导致,只要配置好Flutter 2.6、Ruby 2.7.5、CocoaPods 1.11.3的对应环境,无需修改项目代码即可正常构建运行。
内容的提问来源于stack exchange,提问作者Sara Samer
相关产品推荐
相关产品推荐

