Xcode无法拉取Swift Package最新版本,标签正常但代码未更新
核对本地缓存仓库的标签提交一致性
进入Xcode缓存的包目录(路径示例:~/Library/Developer/Xcode/DerivedData/[你的项目名]/SourcePackages/checkouts/[你的SP包名]),执行git log --oneline查看标签对应的Commit Hash,和Github上该标签指向的Commit对比。若不一致,在该目录执行git fetch --tags拉取最新标签,再回到Xcode执行File -> Packages -> Resolve Package Versions。强制Xcode重新克隆包仓库
直接删除上述checkouts目录下的你的SP包文件夹,重启Xcode后重新执行包解析操作,让Xcode完整拉取最新仓库内容。检查Package.swift配置与版本规则
确认SP仓库的Package.swift中,所有Target、产品的文件引用均为最新状态;同时检查主项目的Package Dependencies版本规则,确保是精确指向新标签(而非范围版本导致的意外匹配)。清理全局SPM缓存
删除~/Library/Caches/org.swift.swiftpm和~/Library/org.swift.swiftpm目录,重启电脑后再打开Xcode重新解析包。终端手动验证SPM拉取
创建临时目录,执行:swift package init --type executable在生成的
Package.swift中添加你的依赖并指定新标签版本,再执行swift package resolve。查看生成的Packages目录内代码是否为最新:- 若终端能获取最新代码,问题集中在Xcode本地配置/缓存;
- 若终端也无法获取,需检查Github上的标签是否正确关联到最新Commit,或仓库权限是否存在隐性问题。
重置工作区状态(若使用Workspace)
关闭Xcode,删除项目的.xcworkspace目录,重新打开.xcodeproj文件,再重新添加依赖或执行包解析。
内容的提问来源于stack exchange,提问作者HenryRootTwo

