Xcode Cloud构建本地SPM报错:检测到过时的Package.resolved文件
问题重现
本地基于Apollo iOS SDK v1.9.0添加了2个Swift包,通过Xcode管理依赖,本地构建正常,但Xcode Cloud构建时报错:
Could not resolve package dependencies:
an out-of-date resolved file was detected at /Volumes/workspace/repository/Play.xcworkspace/xcshareddata/swiftpm/Package.resolved, which is not allowed when automatic dependency resolution is disabled; please make sure to update the file to reflect the changes in dependencies. Running resolver because the following dependencies were added: 'myPackage' (/Volumes/workspace/repository/MyProject/MyPackage)
fatalError
an out-of-date resolved file was detected at /Volumes/workspace/repository/MyProject.xcworkspace/xcshareddata/swiftpm/Package.resolved, which is not allowed when automatic dependency resolution is disabled; please make sure to update the file to reflect the changes in dependencies. Running resolver because the following dependencies were added: 'myPackage' (/Volumes/workspace/repository/MyProject/MyPackage)fatalError
解决方案
强制刷新本地依赖缓存并重新提交
打开Xcode,依次执行:File > Packages > Reset Package Caches,完成后再执行File > Packages > Resolve Package Versions。检查Package.resolved文件是否有变更,将最新版本提交并推送到远程仓库。核对Xcode Cloud的依赖解析配置
进入项目设置:Project > Project Settings > Package Dependencies,查看Automatic Dependency Resolution的状态。如果项目禁用了自动解析,确保本地Package.resolved完全匹配当前依赖状态;也可以尝试临时启用自动解析,重新生成Package.resolved后再禁用,或者保持启用(如果项目允许),让Xcode Cloud自动处理依赖版本。确保本地包使用相对路径
检查添加本地Swift包时的路径配置:添加包时选择Add Local...,确保选择的是项目根目录下的包文件夹,而非绝对路径。Xcode Cloud的工作区路径与本地不同,绝对路径会导致依赖找不到,进而触发resolved文件过时的错误。重新添加本地Swift包
先从Package Dependencies中移除这两个本地包,清理项目缓存后,重新添加本地包,再次执行依赖解析,提交更新后的Package.resolved。确认
Package.resolved已正确提交
用终端执行git status查看文件状态,git log --oneline检查提交记录,确保Package.resolved已经被添加到git仓库并推送到远程分支,避免Xcode Cloud拉取代码时缺少该文件。
内容的提问来源于stack exchange,提问作者Alistair Cooper

