Swift项目Package.resolved文件损坏且找不到的解决与预防方案
解决Package.resolved损坏却找不到文件的问题
报错说明
你遇到的报错本质是Package.resolved文件混入了HTML字符(<),导致JSON解析失败,但这个文件不在项目根目录,藏在缓存或Xcode的衍生数据里:
Package.resolved file is corrupted or malformed; fix or delete the file to continue: dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "Unexpected character '<' around line 8, column 2." UserInfo={NSDebugDescription=Unexpected character '<' around line 8, column 2., NSJSONSerializationErrorIndex=184})))
排查修复步骤
1. 找DerivedData里的Package.resolved
Xcode的衍生数据目录存了编译缓存,里面大概率有这个损坏的文件:
- 打开Xcode,点顶部菜单栏
File > Project Settings(如果是Workspace就选Workspace Settings) - 点击
Derived Data旁边的箭头,直接跳转到对应文件夹 - 在这个文件夹里搜索
Package.resolved,找到后删掉 - 重启Xcode,重新拉取依赖
2. 清空SPM全局缓存
如果上面的方法没用,清理Swift Package Manager的全局缓存:
- 打开Finder,前往路径
~/Library/Caches/org.swift.swiftpm/ - 删除
resolved文件夹,或者直接清空整个缓存目录 - 打开终端,进入项目根目录,执行:
swift package clean swift package update
3. 检查Workspace的隐藏目录
如果是Workspace项目,Package.resolved可能在Workspace的隐藏目录里:
- 打开项目所在文件夹,按
Command + Shift + .显示隐藏文件 - 进入
[你的Workspace名].xcworkspace/xcshareddata/swiftpm/目录,看看有没有Package.resolved,有的话删掉
4. 强制重置SPM依赖
前面的方法都无效的话,直接重置项目的SPM配置:
- 关掉Xcode
- 终端进入项目根目录,执行:
rm -rf .swiftpm swift package resolve
- 重新打开项目,Xcode会自动重新解析所有依赖
5. 检查依赖源是否出问题
报错里的<字符大概率是依赖源返回了HTML(比如GitHub仓库访问出错返回404页面):
- 打开项目里的
Package.swift,检查依赖的URL是否正确 - 用浏览器打开这些URL,确认能正常访问仓库
- 如果是私有依赖,检查本地Git凭证(SSH密钥、Token)是否过期或无效
内容的提问来源于stack exchange,提问作者Yasir Arefin Tusher
相关产品推荐
相关产品推荐

