在Xcode 11中添加对本地swift包的依赖

时间:2019-12-01 01:38:31

标签: ios swift xcode xcode11 swift-package-manager

我试图在我的Xcode项目中添加对本地swift包的依赖。 (我不想使用文件URL file://me/dev/app/package添加依赖项,因为它不能与其他环境共享)

我试图将包拖放到目标。这将创建对项目中程序包的引用,我可以在“使用库链接二进制文件”构建阶段中添加该程序包,但是仍然找不到该库。

No such module 'Analytics'

我的原始配置

enter image description here

拖放后

enter image description here

这是我的软件包配置:

// swift-tools-version:5.1
import PackageDescription

let package = Package(
    name: "Analytics",
    products: [
        .library(name: "Analytics", targets: ["Analytics"]),
    ],
    dependencies: [
        .package(path: "../SomeOtherPackage"),
    ],
    targets: [
        .target(name: "Analytics", dependencies: [
            "SomeOtherPackage",
        ]),
    ]
)

我还将该软件包包含在目标链接的二进制文件和/或捆绑资源和/或编译的源中,无济于事:

enter image description here

我读过this long discussion,这似乎不是结论性的。

以下是我正在尝试的简单示例:https://github.com/gsabran/SPM_Xcode_test

1 个答案:

答案 0 :(得分:3)

这实际上是我的工作,并且可以正常工作... Xcode 11.2

I。准备包裹

  1. 文件>新建> Swift软件包>选择空文件夹(或创建新文件夹)>输入库名称(MyLibrary)

  2. 在项目中找到MyLibrary.swift并设置公共结构和变量,因此在应用程序中使用了一些导出功能(我将静态常量和固定UT制成)

  3. 构建>确定>关闭项目

II。准备项目

  1. 文件>新建>项目> iOS> Single View App>输入名称(MyApp)>下一步>选择与上述相同的文件夹(默认情况下)>创建

  2. 构建>确定

  3. 从Finder中,将MyLibrary文件夹拖到Xcode Project Navigator中项目名称的正下方

  4. 构建>确定

  5. 在项目导航器中单击MyApp项目图标>选择MyApp应用程序目标>框架,库,…单击+>在最上方的工作区部分中,选择MyLibrary>添加

  6. 清洁>构建>确定

  7. 打开ContentView.swift>键入import MyLibrary(自动补全已经看到了) 用“((MyLibrary.text)””代替“ Hello,World”

  8. 构建并运行>确定

就这样。

要验证使用的相对路径,请在TextEdit中打开project.pbxproj,这是屏幕截图

Swift package relative path

更新
Note1 -我考虑过在清理后解决程序包延迟问题,因此在一段时间内(此处1-2分钟),Build完全失败,并报告了错误,但是在该延迟之后,该索引可见重新启动,并且构建成功。
Note2 -在图(MyApp> MyLibrary> AnotherLibrary)中添加第二个从属程序包是相同的。