ios - 在 Xcode 11 中添加对本地 swift 包的依赖
问题描述
我正在尝试在我的 Xcode 项目中添加对本地 swift 包的依赖项。(我不想使用文件 url 添加依赖项,file://me/dev/app/package
因为这不能共享到其他环境)
我试图将包拖放到目标。这会创建对项目中包的引用,我可以在“Link Binary With Libraries”构建阶段添加该包,但仍然找不到该库。
No such module 'Analytics'
我原来的配置
拖放后
这是我的包配置:
// 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",
]),
]
)
我还将包包含在目标链接的二进制文件和/或捆绑资源和/或编译的源中,但无济于事:
我读过这个似乎没有定论的冗长讨论。
这是我正在尝试的一个简单示例:https ://github.com/gsabran/SPM_Xcode_test
解决方案
这就是我所做的,它只是工作...... Xcode 11.2
一、准备包裹
文件 > 新建 > Swift 包 > 选择空文件夹(或新建)> 输入库名称(MyLibrary)
在项目中找到 MyLibrary.swift 并制作公共结构和变量,所以有一些导出可以在应用程序中使用(我制作了静态常量并固定了 UT)
构建 > 确定 > 关闭项目
二、准备项目
文件 > 新建 > 项目 > iOS > 单一视图应用程序 > 输入名称 (MyApp) > 下一步 > 选择与上面相同的文件夹(默认情况下)> 创建
构建 > 确定
从 Finder 中将 MyLibrary 文件夹拖到 Xcode Project Navigator 中项目名称的正下方
构建 > 确定
单击 Project Navigator 中的 MyApp 项目图标 > 选择 MyApp 应用程序目标 > 部分 Frameworks, Libraries, ... 单击 + > 在最顶部的 Workspace 部分中选择 MyLibrary > Add
清洁 > 构建 > 确定
打开 ContentView.swift > type
import MyLibrary
(自动补全已经看到) 将“Hello, World”替换为“(MyLibrary.text)”构建并运行 > 确定
而已。
要验证使用的相对路径在 TextEdit 中打开 project.pbxproj,这里是截图
更新:
注 1 - 我考虑过在 Clean 之后解析包有一些延迟,所以在一段时间内,这里有 1-2 分钟,构建失败并报告错误,但在延迟之后,可以看到索引重新启动并且后续构建成功.
注2 - 在图中添加第二个依赖包(MyApp > MyLibrary > AnotherLibrary)是相同的。
推荐阅读
- java - 我正在尝试测试以下方法。但是,我得到空指针异常
- angular - 如何将参数传递给自定义 Angular webpack 构建?
- jsf-2 - JSF 2.2 ViewScoped bean 的行为就好像它是 WebSphere Portal 中的 SessionScoped bean
- excel - 从 VBA 中的多个表中清除数据
- jenkins - 从 Linux 在 IIS 上发布 NetCore 2.2
- javascript - location.reload(true); 不在ie11中
- google-apps-script - 如何创建可以创建新 Google Doc 的 Google Web App,然后在浏览器选项卡中打开它?
- tensorflow - 如何在 tensorflow.js 模型中添加图像并针对给定的图像标签训练模型
- terminal - 启动终端时applescript超时
- sql - 如何检查连接表中的完全匹配