Xcode 13.2.1 无法解析 Swift 包管理器

luc*_*841 12 xcode swift-package-manager

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

在此输入图像描述

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

Dav*_*d H 18

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


如果 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 }
...
Run Code Online (Sandbox Code Playgroud)

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

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