美文网首页
Swift Package 报 multiple refere

Swift Package 报 multiple refere

作者: 张_何 | 来源:发表于2025-08-11 14:06 被阅读0次
  • Swift Package 报 error: Could not compute dependency graph: unable to load transferred PIF: The workspace contains multiple references with the same GUID ‘PACKAGE: *****************::MANGROUP’

这个问题我们可以通过清除缓存来解决:

Swift Package 的缓存在下面两个目录里:

  • ~/Library/Developer/Xcode/DerivedData/* (一般清除这里的就这里,如果这个清除的还不行,再把下面的也清除掉)
  • ~/Library/Caches/org.swift.swiftpm

我们可以手动将这两个目录下的缓存清除掉然后再重启Xcode 加载Package 编译就可以了,

或者我们可以写一个脚本,每次需要清缓存的时候直接执行脚本就行, 对应shell 脚本如下:

echo "> Restoring your environment..."

echo "> Deep Cleaning..."

echo "> Killing xcode to clear out derived data"
kill $(ps aux | grep 'Xcode' | awk '{print $2}')

echo "> Destroying derived data"
rm -rf ~/Library/Developer/Xcode/DerivedData/*

echo "> Deleting SPM Cache"
rm -rf ~/Library/Caches/org.swift.swiftpm

echo "> Resolving Dependcies..."
xcodebuild -resolvePackageDependencies -scmProvider system

echo "> Opening the workspace..."
open BoseWillow.xcworkspace/

echo "> Restoration complete."
  • kill $(ps aux | grep 'Xcode' | awk '{print $2}')是查找并杀掉所有正在运行的 “Xcode” 进程

  • ps aux : 列出当前系统中所有正在运行的进程,包含用户、CPU 使用率、内存、PID(进程 ID)等信息。

  • grep 'Xcode': 在所有进程列表中查找包含 Xcode 字样的进程行。这会匹配到 Xcode 本身,也可能匹配到一些子进程或包含 Xcode 字符串的命令行。

  • awk '{print $2}' 从匹配到的每一行中提取第二列的内容。在 ps aux 的输出中,第二列就是 PID(进程 ID)。

  • kill $( ... ): $( ... ) 是命令替换,把里面命令的输出作为参数传给 kill。最终的效果就是:kill 后面跟上所有 Xcode 相关进程的 PID,从而结束它们。

  • rm -rf ~/Library/Developer/Xcode/DerivedData/*rm -rf ~/Library/Caches/org.swift.swiftpm 是移除指定目录下的文件

  • xcodebuild -resolvePackageDependencies -scmProvider system 是让 Xcode 提前解析并下载 Swift Package Manager 的依赖,并指定使用系统的 git(或其它 SCM 工具)来拉取代码。

  • open BoseWillow.xcworkspace/ 是打开项目

相关文章

网友评论

      本文标题:Swift Package 报 multiple refere

      本文链接:https://www.haomeiwen.com/subject/pnpmojtx.html