XCode 14 - SPM包的最小部署目标

3
我正在为macOS 10.12编译,我导入了与10.9兼容的Reachability.swift包。在Package.swift文件中没有指定最低版本。然而,在编译时出现以下错误:
“Compiling for macOS 10.12, but module 'Reachability' has a minimum deployment target of macOS 10.13”
自从我更新到XCode 14后,就会出现这个问题。在版本13中,没有问题。如果我在Reachability的Package.swift文件中指定最低版本platforms:[.macOS(.v10_10)],,清除所有缓存,仍然会出现同样的问题。
我可以将部署目标升级到10.13(与计算机兼容),或者简单地将Reachability.swift文件包含在我的代码中,但我更希望它能正常工作...
[编辑]注意:其他软件包,如AppCenter,没有相同的问题... 这很奇怪。
[编辑2]随着XCode 14.1的发布,问题仍然存在。
你有什么建议吗?

1
Xcode 14.1 将增加最低支持版本至 10.13。这可能是一个 SPM 问题,他们没有预料到 Xcode 14 会随 macOS 12 SDK 发布,而所有的 beta 版本都有 macOS 13 SDK。 - Cyberbeni
我忘了提到其他软件包,比如AppCenter,没有同样的问题...这很奇怪。 - Pierre
1个回答

2
我可以翻译成中文:

我可以重现您的问题:使用AppCenter没有问题,但是可达性会抛出一个错误。

这是我发现的可能是根本原因:

  1. 将Reachability设置为本地SPM,并修改其swift-tool-version设置和平台设置以与AppCenter对齐。

    SPM Modification

  2. 然后,如果您点击进入.v10_12 MacOSVersion,您会发现低于10.13的操作系统版本都被标记为不支持

10.13 below is unsupported now

如果你前往构建文件并使用 `otool` 进行测试,你会发现构建产品的最低支持版本与上述描述匹配: enter image description here 因此,即使你将最低支持版本指定为 `10.12`,构建工具仍然会针对 `10.13` 进行目标设置。
如果你在 `AppCenter` 上检查 `package.swift` 文件中的 `LC_MIN_VERSION_MACOSX`,也会发现它的目标版本是 `10.13` 而不是 `10.12`。
但是为什么 Xcode 接受 `AppCenter` 却对 `Reachability` 报错呢?

enter image description here

请查看以下编译日志。你会发现它在“emitting module”阶段,构建系统正在使用“swift-frontend”嵌入这些第三方依赖项。因此我猜想AppCenter是用Objective C编写的。
“swift-frontend”的检查最小操作系统版本行为在OC依赖库“AppCenter”和Swift依赖库“Reachability”之间是不同的。

enter image description here


这意味着使用Xcode 14.1将不再支持编译10.12了吗?我真的很失望。 - Pierre
1
我看到了你关于最新14.1版本的编辑。恐怕是这样。 - kakaiikaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接