You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 5.7中Swift Package Manager缓存的存放路径是什么?

Swift 5.7 SPM标签哈希不匹配问题解决

重打Git标签后触发的does not match previously recorded value报错,是因为漏清理了SPM存储仓库元数据的全局目录,之前清理的缓存路径不包含这部分内容。
触发报错的原始信息:

Revision 30c16cab9c718416fee2191ff2ac0b6f91eeb511 for base
remoteSourceControl https://github.com/myUser/myRepo version 1.0.0
does not match previously recorded value

遗漏的缓存存放位置

Swift 5.7版本的SPM会把远程仓库的标签-提交哈希映射关系、已拉取的仓库裸库存放在非Caches路径下:
~/Library/org.swift.swiftpm/
之前清理的~/Library/Caches/org.swift.swiftpm/是临时下载缓存,不存校验用的元数据,所以清完还是会报哈希校验失败。

完整清理操作步骤

执行操作前先退出所有Xcode进程、终止所有运行中的swift命令行任务,避免文件被占用:

  • 删除项目本地缓存:项目根目录下的.build文件夹、Package.resolved文件
  • 删除Xcode派生数据:删除~/Library/Developer/Xcode/DerivedData/下和当前项目对应的子目录
  • 删除SPM临时下载缓存:删除~/Library/Caches/org.swift.swiftpm/整个目录
  • 删除遗漏的SPM元数据缓存:删除~/Library/org.swift.swiftpm/整个目录,该目录会在下次SPM拉取依赖时自动重建,不会产生异常
  • 回到项目根目录执行命令重置依赖:
    swift package reset
    swift package resolve
    
  • 依赖解析完成后再执行swift package generate-xcodeproj即可正常生成项目,不会再报哈希不匹配错误。

额外注意

如果后续用Xcode打开项目操作,清理完上述路径后还需要点击Xcode菜单的File > Packages > Reset Package Caches,清空Xcode进程内存中残留的旧依赖记录,避免再次触发同类报错。

内容的提问来源于stack exchange,提问作者Bretsko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:09:21