Xcode 13.2.1 无法解析 Swift 包管理器

Xcode 13.2.1 unable to resolve Swift Package Manager

在我的应用程序中,我使用了几个 SPM,我将它们插入到我的项目中。昨天我将 Xcode 更新到最新版本 (13.2.1),但我在使用 SPM 时遇到了很多问题。通常当我切换分支或更改 Xcode 的版本时,我会使用 command+shift+k 清除所有内容。我对 Xcode 的新版本做了同样的事情,但是我在解决 SPM 时遇到了很多问题,正如您在这张图片中看到的那样

我的所有包裹都已提取但未解析。这是一个非常大的问题,因为在这种情况下我无法编译我的应用程序。 有办法解决这个问题吗?有跟我一样问题的吗? 我对此感到疯狂。 谢谢

这些步骤在 XCode 13:

对我有效
  1. 清除派生数据
  2. 退出XCode
  3. 再次打开XCode
  4. 等待索引 |处理文件
  5. 构建(这很可能会失败)
  6. 等待包解决
  7. 清理项目
  8. 构建。

此外,如果您在本地包上遇到错误,请尝试单独构建它们。

希望对你有所帮助

我在同一个问题上花了两天时间,终于得到了相当长的要解决和构建的软件包列表。我简直不敢相信 Apple 无法解决这个问题。如果我们一次只更新一个包,我们就可以慢慢地让一切正常工作。无论如何,我只是向我的团队记录了我为最终解决所有包所做的工作:


如果Xcode难以解决它们,则解决方案很复杂并且必须经常进行多次(Xcode 13.2.1):

  • 关闭项目
  • 退出 Xcode
  • 删除派生文件夹中的所有文件夹,然后在 Finder 中删除回收站
  • cd 到包含 MyProject.xcodeproj 和 运行 的文件夹: xcodebuild -resolvePackageDependencies -project MyProject.xcodeproj -scheme MyScheme -platform="iOS, name:'Any iOS Device'"
  • 打开Xcode
  • 打开项目

有些项目可能无法解决或有错误(右侧的小红“x”)。不好但可能可以解决:

  • 使用Xcode“文件”->“包”->“解析包”
  • 或者,关闭项目,然后重新打开它。

当 运行 宁 xcode build 时,您可能会收到一些警告,我得到:

--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, variant:Designed for [iPad,iPhone], id:xxx-xxx }
{ platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device }
{ platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Any iOS Simulator Device }
...

一旦你到达一个稳定的位置,没有错误并且所有包都显示版本号,你应该可以长期使用。

重要提示:有时您需要更新项目 -> 包依赖项中显示的最低版本,以反映 现有的包发布(您可以从左侧 Xcode 面板或访问包 github 站点看到。如果它们太 旧的,您在擦除派生文件夹后可能会遇到问题(由于某些其他原因,可能包格式已更改?)


对我来说,

  1. 点击 Cmd + q 完全退出 Xcode
  2. 等待几秒钟以确保 Xcode 完全关闭。
  3. Re-Open Xcode.