如何在Xcode中更新Swift依赖项

joe*_*els 14 xcode swift swift-package-manager

在我创建一个带有依赖项的新swift包后,我调用了swift package generate-xcodeproj.如果我的依赖项有一个新版本我打电话swift package update.我的依赖项的新版本被下载和构建,但Xcode现在对旧版本的依赖项有一个错误的引用.我可以swift package generate-xcodeproj再次打电话,但这将删除我设置的任何自定义目标.

如何更新我的swift依赖项和我的Xcode项目而不删除我的自定义目标?

esi*_*ver 38

我只是偶然发现了这个问题,发现“如何在 Xcode 中更新 swift 依赖项”的解决方案可能已经改变,因为 Swift Packages 已经存在了几年。

对我来说,解决方案是简单地去File-> Swift Packages-> Update to Latest Package Versions

在此处输入图片说明

  • 令我惊讶的是,Facebook 7.1.1 没有升级到 8.0。我还有什么需要做的吗? (3认同)

Moj*_*ini 19

- 使用 Xcode 更新单个依赖项

这种方法将节省大量资源和时间。因为它不会强制其他包重新下载。

双击您提到的选项卡中的包,然后将版本更改为其他版本。然后它将重新检查远程存储库。这样做的好处是只更新选定的包。(另外,最好在包中设置当前使用的版本。)


- 使用 Xcode 更新所有依赖项

从文件 -> Swift 包 -> 更新到最新的包版本

SS


带 GUI 的单个包(Xcode 12 及更高版本)

右键单击左侧导航窗格中的包,然后选择更新包

Xcode 13

请注意,您将看到 Xcode 说更新所有包,但它只会更新选定的包


pai*_*aiv 8

您可以在单独的项目中管理依赖项,而不是尝试保留对生成的项目的更改,如CocoaPods.

开始新项目时:

  1. 为您的应用创建Xcode项目 MyApp.xcodeproj
  2. 保存为工作区 MyApp.xcworkspace
  3. 为依赖项创建包 mkdir MyDeps && cd MyDeps swift package init --type library
  4. 添加依赖项 Package.swift
  5. 为依赖包生成Xcode项目 swift package generate-xcodeproj
  6. 将生成的项目添加MyDeps.xcodeproj到工作区MyApp.xcworkspace
  7. 将目标添加MyDeps.framework到应用的链接框架MyApp.xcodeproj

使用此设置,您可以自由更新Package.swift中的依赖项,并根据需要重新生成依赖项目.


Bit*_*Dog 8

很多包不更新的问题是因为s​​wift包版本规则限制包自动更新到当前的主要版本,即包的v3.3.1会更新到v3.4.0,但不会自动更新到v4.0.1 . 因此,在 Xcode 中使用更新选项不一定会获得包的最新主要版本。

要解决此问题,请从项目面板中打开项目,选择项目(而不是目标),然后选择“Swift Packages”选项卡。双击要更新的包,将最低版本更改为下一个主要版本。

在此处输入图片说明

  • 这是很多人的答案。我相信,如果没有这种干预,软件包管理器将不会获得下一个专业。 (2认同)
  • 这确实是答案。我仍然觉得从完全断开连接的地方管理包的用户体验很糟糕 (2认同)