Flutter iOS构建执行pod install时出现NoMethodError报错求助
解决Flutter iOS构建时pod install的NoMethodError问题
问题描述
在搭载M2 Pro芯片的Mac上构建Flutter iOS应用时,执行pod install出现以下报错:
NoMethodError - undefined method `present?' for nil:NilClass /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer/podfile_validator.rb:100:in `validate_conflicting_external_sources!' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer/podfile_validator.rb:85:in `block in validate_pod_directives' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer/podfile_validator.rb:84:in `each' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer/podfile_validator.rb:84:in `validate_pod_directives' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer/podfile_validator.rb:40:in `validate' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer/analyzer.rb:225:in `validate_podfile!' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer/analyzer.rb:104:in `analyze' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer.rb:422:in `analyze' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer.rb:244:in `block in resolve_dependencies' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/user_interface.rb:64:in `section' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer.rb:243:in `resolve_dependencies' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/installer.rb:162:in `install!' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/command/install.rb:52:in `run' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/claide-1.1.0/lib/claide/command.rb:334:in `run' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods/command.rb:52:in `run' /Users/User/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/cocoapods-1.13.0/bin/pod:55:in `<top (required)>' /Users/User/.rvm/rubies/ruby-2.7.0/bin/pod:25:in `load' /Users/User/.rvm/rubies/ruby-2.7.0/bin/pod:25:in `<main>' /Users/User/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:22:in `eval' /Users/User/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:22:in `<main>'
默认Flutter计数器应用可正常运行,已尝试以下方案但未解决:
- 执行
flutter clean和flutter pub get - 执行
sudo arch -x86_64 gem install ffi - 进入ios目录执行
arch -x86_64 pod install - 进入ios目录执行
pod install --repo-update
解决方案
方案1:降级ActiveSupport版本
报错关联ActiveSupport 7.1.0的兼容性问题,执行以下命令降级到7.0.8:
gem uninstall activesupport gem install activesupport -v 7.0.8
之后重新进入ios目录执行pod install。
方案2:升级CocoaPods版本
当前使用的CocoaPods 1.13.0存在该bug,升级到最新稳定版本:
gem update cocoapods
升级完成后清理缓存并重新安装:
pod cache clean --all cd ios && pod install
方案3:切换Ruby环境
RVM管理的Ruby环境可能存在兼容性问题,尝试切换到系统Ruby:
- 临时禁用RVM:
rvm use system - 重新安装CocoaPods:
sudo gem install cocoapods - 进入ios目录执行
pod install
如果需要长期管理Ruby版本,建议使用rbenv替代RVM。
方案4:检查Podfile配置
报错出现在验证冲突外部源的步骤,检查ios目录下的Podfile,确保所有依赖的外部源配置完整,没有缺失git、path等关键字段,避免类似以下不完整的配置:
pod 'SomePod', :git => nil
内容的提问来源于stack exchange,提问作者Alex M
相关产品推荐
相关产品推荐

