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

Swift 使用SPM在XCode11中添加本地依赖项,swift,package-managers,xcode11,Swift,Package Managers,Xcode11,是否可以在xcode 11中将本地依赖项与SPM集成, 文件>Swift程序包>添加程序包依赖项。。。 它似乎只是填充并让我选择托管在bitbucket上的git repos 我只是不确定我是否以正确的方式处理这个问题,也许我应该使用Package.swift文件来代替?我对CoCoapod有很多经验,但我想扩展并尝试其他工具,特别是如果它们将在xcode中得到SPM的支持(我使用的是xcode 11 beta 5)是的,xcode使这项基本任务变得不必要的困难 不过,诀窍很简单:在选择“添加包

是否可以在xcode 11中将本地依赖项与SPM集成, 文件>Swift程序包>添加程序包依赖项。。。 它似乎只是填充并让我选择托管在bitbucket上的git repos


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

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

不过,诀窍很简单:在选择“添加包依赖项…”时弹出的工作表中,在URL字段中,可以输入一个文件://URL。e、 g.将包的文件夹拖到该字段中,该字段将在其中放置路径-例如“/Users/me/Documents/myshinPackage/”,然后将“file://”粘贴到其前面,您就可以继续了


附录:正如一些人在下面的评论中所指出的,如果您与其他人共享项目,这是有问题的,除非您在路径上进行标准化。但是,对于个人使用来说,这很好。

我就是这样做的:

  • 将包文件夹(在我的示例中为“数据结构”)从finder直接拖放到目标的框架组中。您将看到被删除的项目采用棕色文件夹颜色(您可以使用箭头“进入”)
  • 转到项目目标页,在“框架和库”中单击“+”按钮。您的包应该作为库显示在“工作区”区域中

Xcode 12

如果项目中已经有包的远程版本,并且希望使用本地版本。还有一些额外的步骤

1。确保本地软件包的版本高于远程软件包的版本

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

  • 在项目导航器中选择您的项目
  • 在主窗口中选择Swift包裹
  • 选择要替换为本地文件包并将其删除
  • 转到文件>Swift程序包>添加程序包依赖项
  • 将您的本地软件包文件夹拖动到软件包搜索栏,并添加前缀
    file://
  • 点击下一步

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

    本地Swift软件包管理器(SPM)

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

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

    也许这段WWDC 2019视频会有所帮助:我想补充一点,即添加的软件包没有箭头来扩展其内容,以防它在Xcode的另一个窗口中打开,就像它在子项目中一样。这让我第一次感到困惑。不仅如此,如果你的包的项目是打开的,你就不会在“框架、库和嵌入内容”中的“工作区”下看到你的包了。@AirXygène我这样做了,对我来说效果很好。当我将包拖到我的项目中时。但我还得多走一步。我想把我的一个包裹换成另一个包裹。两者都位于本地路径。知道我该怎么做吗,因为将一个包拖放到另一个包中对我不起作用,我还尝试在dependencies中使用本地路径,它会删除我的目标和所有内容。任何帮助都将不胜感激。@Sagar您不能使用嵌套包。但是您可以拥有依赖于其他包的包,因此您可以在同一级别添加所有包。您在客户端包清单文件中声明依赖项。此解决方案与版本控制系统完全不兼容。这应该是接受答案!如果您在本地git克隆repo,此解决方案将非常有效。您不能在“file://”URL中指定相对路径。我尝试了“/dir”和“$(PROJECT\u dir)/dir”,但没有成功。因此,ya,你不能把它提交给一个repo,并期望它能为具有不同路径的人工作。我需要使用一个本地包。swift和“通过拖放导入依赖项”的建议在本指南中,我注意到,从技术上讲,URL中需要三个斜杠:file:///Users/name/...
    <path_derived_data>/<randomizer>/Build/Products/Debug
    //e.g.
    /Users/alex/Library/Developer/Xcode/DerivedData/SPMExperiments-bmmqumztjedpekaajffnaegxzwzg/Build/Products/Debug