Xcode 14 beta环境下pod init/pod install执行失败报错
问题根因
报错是多个问题叠加导致,核心触发点如下:
- 核心错误
[Xcodeproj] Unknown object version (56):Xcode 14 Beta生成的项目文件对象版本号为56,当前安装的CocoaPods 1.11.3依赖的xcodeproj 1.21.0没有适配这个版本,无法解析Xcode14格式的项目文件,是所有报错的源头。 - 后续的
can't modify frozen String (FrozenError)是旧版CocoaPods抛错时的连带bug:它自身的错误上报逻辑和Ruby 2.7的字符串不可变规则不兼容,本来要提示项目解析失败,结果错误上报模块先崩溃了,不属于核心问题。 - 开头的三行
Ignoring xxx提示是本地Ruby gem的原生扩展未完成编译,属于小型环境兼容问题。 - 智能引号警告是因为编辑Podfile时用了会自动替换标点的编辑器,把半角直引号换成了全角弯引号,暂时不阻塞命令运行,但留着后续容易引发配置解析故障。
分步解决方法
按顺序执行以下操作即可修复,不需要安装fastlane这类无关工具:
- 第一步:修复未编译的Ruby gem扩展
终端逐行执行以下命令,重新编译提示异常的三个gem:gem pristine ffi --version 1.15.5 gem pristine executable-hooks --version 1.6.1 gem pristine gem-wrappers --version 1.4.0 - 第二步:升级适配Xcode14的CocoaPods版本
1.11.3版本发布时Xcode14尚未推出,本身就不兼容新格式的项目文件,直接升级到适配版本即可:
如果是通过gem安装的CocoaPods,逐行执行:
如果是通过Homebrew安装的CocoaPods,直接执行升级命令即可:gem install xcodeproj -v 1.22.0 gem install cocoapods -v 1.12.0brew upgrade cocoapods - 第三步:修复Podfile的引号问题
用VS Code、Sublime这类纯代码编辑器打开Podfile,把所有弯引号(“”‘’)全部替换成半角直引号(""'')后保存。不要用macOS自带的文本编辑改Podfile,它默认会自动替换半角标点为全角智能引号,直接写坏配置文件。 - 第四步:重新执行pod命令
进入项目目录,先执行pod deintegrate清理之前失败的集成残留,再执行pod install即可正常运行。
临时兜底方案
如果项目有特殊要求暂时不能升级CocoaPods,可以手动调整项目格式兼容旧版:
打开Xcode,点击菜单栏File - Project Settings,把Project Format下拉选项从Xcode 14.0改成Xcode 13.0-compatible,关闭Xcode后再执行pod命令即可绕过版本检测。注意这只是临时方案,等CocoaPods适配完成后还是建议升级版本,避免后续出现兼容问题。
内容的提问来源于stack exchange,提问作者AzeTech
相关产品推荐
相关产品推荐

