在为我的 iOS 项目运行 pod install
时,我遇到了如下错误:
/Library/Ruby/Gems/2.6.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:85:in `initialize': [Xcodeproj] Unable to find compatibility version string for object version `70. (ArgumentError)
问题出在哪里?
该错误是由于在项目的 project.pbxproj 文件中出现了一个意料之外的 objectVersion 值引起的:
objectVersion = 70;
xcodeproj gem 无法识别该版本,因为它期望对已知版本值建立映射(例如,新版 Xcode 项目使用不同的版本号)。
我的初始解决方案:修改 Gem 文件
起初,我通过修改 Gem 文件来修补这个问题。 文件路径:
/Library/Ruby/Gems/2.6.0/gems/xcodeproj-1.27.0/lib/xcodeproj/constants.rb
我添加了如下版本映射:
70 => 'Xcode 16.2',
这使得 pod install 能够顺利运行。但是,修改 Gem 文件并不是最佳方案,因为这可能会在其他项目中或在更新 Gem 时引起问题。
最终、更好的解决方案:更新你的 Xcode 项目
我发现,当使用 Xcode 16.2 创建一个新的空项目时,生成的 project.pbxproj 文件会包含如下内容:
objectVersion = 77;
因此,正确的解决方案是更新你现有项目的 project.pbxproj 文件。
如何更新 project.pbxproj 文件
- 定位文件: 在 Finder 中右键点击你的 .xcodeproj 文件,选择 "显示包内容",然后在文本编辑器中打开 project.pbxproj 文件。
- 编辑 Object Version: 找到这一行:
objectVersion = 70;
将其修改为:
objectVersion = 77;
保存文件: 更新后,再次运行 pod install 即可。 另外:使用终端 如果你更习惯使用命令行,可以运行下面的命令(将 MyProject.xcodeproj 替换成你的项目名称):
sed -i '' 's/objectVersion = 70/objectVersion = 77/' MyProject.xcodeproj/project.pbxproj
总结
- 错误: 由于项目的 objectVersion 设置为 70,而 xcodeproj gem 无法识别该值,导致 pod install 命令失败。
- 临时方案: 我最初通过添加映射(70 => 'Xcode 16.2')来修补了该问题。
- 正确的解决方法: 更新项目中的 project.pbxproj 文件,将 objectVersion 从 70 修改为 77,以匹配 Xcode 16.2 项目的配置。
- 在每个人的环境中可能报的错误版本和我的不一样,但是可以根据这个思路来解决。