Xcode14环境下如何让pod install使用xcodeproj 1.22.0替代1.21.0?
在Xcode 14、macOS 12.5、M1芯片、CocoaPods 1.11.3环境下执行pod install时抛出错误:
RuntimeError - [Xcodeproj] Unknown object version (56).
/opt/homebrew/Cellar/cocoapods/1.11.3/libexec/gems/xcodeproj-1.21.0/lib/xcodeproj/project.rb:228:ininitialize_from_file' /opt/homebrew/Cellar/cocoapods/1.11.3/libexec/gems/xcodeproj-1.21.0/lib/xcodeproj/project.rb:113:inopen'
核心矛盾:gem list显示已安装xcodeproj 1.22.0,但pod install仍调用CocoaPods内置的1.21.0版本,直接卸载该版本提示未安装,xcodeproj --version返回1.21.0,路径指向/opt/homebrew/bin/xcodeproj。
以下是具体解决方案:
方案一:替换CocoaPods内置的xcodeproj版本
Homebrew安装的CocoaPods有独立的gem环境,和系统/用户gem环境分离,直接gem install的版本不会被它调用,需手动替换:
- 进入CocoaPods的libexec目录:
cd /opt/homebrew/Cellar/cocoapods/1.11.3/libexec - 卸载内置的旧版xcodeproj(如果提示未安装直接跳过):
gem uninstall xcodeproj --version 1.21.0 - 在该环境下安装xcodeproj 1.22.0:
gem install xcodeproj -v 1.22.0 - 验证版本是否生效:
返回1.22.0后,再执行/opt/homebrew/Cellar/cocoapods/1.11.3/libexec/bin/xcodeproj --versionpod install即可。
方案二:用Bundler锁定依赖(长期稳定方案)
通过Bundler管理项目的Ruby依赖,强制指定xcodeproj版本:
- 在项目根目录创建
Gemfile,内容如下:source 'https://rubygems.org' gem 'cocoapods', '1.11.3' gem 'xcodeproj', '1.22.0' - 安装Bundler并安装依赖:
gem install bundler bundle install - 以后执行
pod install都用Bundler启动:
这样会严格遵循bundle exec pod installGemfile指定的版本,避免环境冲突。
方案三:升级CocoaPods(可选)
尝试升级CocoaPods到兼容xcodeproj 1.22.0的版本:
brew update brew upgrade cocoapods
升级完成后,新版本CocoaPods通常会内置适配Xcode 14的xcodeproj版本,直接执行pod install即可。
内容的提问来源于stack exchange,提问作者user938363

