Xcode 14 beta 1引入本地Swift包构建失败无法克隆目录问题
Xcode 14 beta 1 本地Swift包构建失败问题
问题现象
项目集成多个本地Swift包时,在Xcode 13.4.1版本下可正常构建运行,切换至Xcode 14 beta 1版本后所有包均构建失败,关联本地包时抛出如下错误信息:
Showing All Messages Cannot clone from local directory /Users/... Please git init or use "path:" for Location(scratchDirectory...
已尝试的无效排查方案
- 在Xcode中移除对应包的引用后重新添加
- 在Xcode中移除包引用,将包目录迁移至其他路径,在Xcode中创建全新的包后将原有代码文件移入新包目录再重新引用
- 执行常规的
Clean Build Folder、Reset Package Caches操作 - 将被依赖的包使用全新名称创建后重新导入项目
问题背景
出现问题的Swift包均为项目本地组件,创建时已选择添加至对应项目,存放路径位于项目目录下。
根因说明
该问题是Xcode 14 beta 1内置Swift Package Manager的已知回归bug:当引用的本地包目录未被识别为git仓库根目录时,SPM不会自动将其判定为本地路径依赖,反而会尝试将本地目录作为远程仓库地址执行clone操作,最终触发报错。
可行解决方案
以下两种方案任选其一即可修复问题:
- 为本地包目录初始化git仓库
打开终端进入每个本地Swift包的根目录(存放Package.swift文件的层级),执行git init命令初始化空本地git仓库。无需提交代码、无需关联远程仓库,目录下存在.git文件夹即可绕过SPM的路径校验逻辑。若项目整体已做git版本控制,子目录内的空git仓库不会影响主仓库的版本管理逻辑。 - 手动修改包引用的路径标识
若无需为本地包单独初始化git,可手动修改项目配置显式声明本地路径:- 关闭Xcode,找到项目根目录下的
.xcodeproj文件,右键选择「显示包内容」 - 打开
project.pbxproj配置文件,搜索所有本地Swift包的引用条目,为location字段对应的路径值显式添加path:前缀,匹配错误提示要求的路径标识格式 - 保存配置文件后重新打开Xcode,执行一次
Reset Package Caches后重新构建即可
- 关闭Xcode,找到项目根目录下的
补充校验:操作后若仍存在报错,检查本地包存放路径不要包含中文、全角特殊字符,Xcode 14 beta阶段的SPM对非ASCII路径存在已知兼容问题。
内容的提问来源于stack exchange,提问作者Gerd Castan
相关产品推荐
相关产品推荐

