使用 SPM 在 XCode11 中添加本地依赖项

Adding Local dependencies in XCode11 using SPM

是否可以在 xcode 中将本地依赖项与 SPM 集成 11, 文件 > Swift 包 > 添加包依赖项... 它似乎只填充并让我 select git 存储库托管在 bitbucket

我只是不确定我是否以正确的方式处理问题,也许我应该改用 Package.swift 文件?我对 Cocoapods 有很多经验,但我想扩展并尝试其他工具,特别是如果它们将在 xcode 中得到支持,因为它接缝 SPM 将是(我使用 xcode11 beta 5)

是的,Xcode 使这项基本任务变得不必要的困难。

虽然技巧很简单:在 select 'Add Package Dependency…' 时弹出的 sheet 中,在 URL 字段中,您可以输入一个文件: // URL。例如将包的文件夹拖到该字段中,这将在其中放置路径 - 例如'/Users/me/Documents/myShinyPackage/',然后把'file://'贴在前面,就可以继续了。

附录:正如一些人在下面的评论中指出的那样,如果您与其他人共享项目,这是有问题的,除非您对路径进行标准化。不过个人用还是可以的。

我是这样做的:

  • 将您的包文件夹(在我的示例中 "DataStructures")从 finder 直接拖放到 Frameworks 组中你的目标。您会看到掉落的项目采用棕色文件夹颜色(您可以使用箭头 "get into it")。
  • 转到您的项目目标页面,在"Framework and Libraries"中单击“+”按钮。您的包应该作为库显示在 "Workspace" 区域。

Xcode 12

如果您的项目中已有包的远程版本并且想在本地工作。还有一些额外的步骤...

1.确保你本地包的版本高于远程版本

如果你不这样做,它会继续获取远程包

  1. Select 您在 Project Navigator 中的项目
  2. 主要windowselectSwift包
  3. Select你要替换成本地的包并移除
  4. 转到文件 > Swift 包 > 添加包依赖...
  5. 将本地包文件夹拖到包搜索栏并添加前缀 file://
  6. 点击下一步

确认最低版本高于远程版本。

本地 Swift 程序包管理器 (SPM)

[Dependency manager]

关键点是:file:// + git 你可以在 URL 字段中使用它

file://<path>
//e.g.
file:///Users/alex/Desktop/MyProject

备注:

  • 它适用于 git 存储库,因此请确保您事先提交了更改
  • 当您添加 SPM 依赖项时 File -> Swift Packages -> Add Package Dependency 它被添加到 project -> Swift Packages 并且 implicit dependency 被添加到 Frameworks, Libraries, and Embedded Content
  • 当您向框架提交新更改时,请不要忘记File -> Swift Packages -> Update to Latest Package Versions

产品文件夹

<path_derived_data>/<randomizer>/Build/Products/Debug
//e.g.
/Users/alex/Library/Developer/Xcode/DerivedData/SPMExperiments-bmmqumztjedpekaajffnaegxzwzg/Build/Products/Debug

[Local CocoaPods]