XCode 14 -SPM软件包的最低部署目标

jtw3ybtb  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(209)

如上所述,我实际上是在macOS 10.12上编译的。我导入了Reachability.swift包,它可以兼容到10.9。Package.swift文件中没有指明最低版本。但是,我在编译时收到了以下错误:
针对macOS 10.12进行编译,但模块“可达性”的最低部署目标为macOS 10.13
如果我在Package.swift中指定了Reachability platforms:[.macOS(.v10_10)],的最低版本,我清理了所有的缓存,我得到了同样的问题。
我可能会将部署目标升级到10. 13(相同的计算机兼容性)或简单地在我的代码中包含Reachability.Swift文件,但我宁愿它工作...
[编辑]注:其他软件包,比如AppCenter,没有同样的问题...这很奇怪。
[EDIT 2]随着XCode 14.1的发布,问题仍然存在。
你有什么建议吗?

vybvopom

vybvopom1#

我可以重现你的问题:可以使用AppCenter,但可访问性会引发错误。
这是我的发现,也许这是根本原因:
1.使可达性成为本地SPM,并修改其swift-tool-version设置和平台设置以与AppCenter保持一致。

1.然后如果你点击进入.v10_12 MacOSVersion,你会发现低于10.13的os版本已经全部被标记为不支持

1.如果您转到构建的文件,使用otool测试它,您会发现构建的产品的最低支持版本与上面的描述相匹配:

因此,即使您将最低支持版本指定为10.12,构建工具仍将以10.13为目标。
1.如果您在AppCenter上选中LC_MIN_VERSION_MACOSX,则它也将10.13作为目标,而不是其软件包.swift文件中的10.12
1.但是为什么Xcode接受AppCenter并为Reachability引发错误呢?

检查下面的构建日志。你会发现在emitting module阶段,构建系统正在使用swift-frontend来嵌入那些第三方依赖项。所以我猜既然AppCenter是用objective C编写的。
检查swift-frontend的最低操作系统版本行为在OC依赖关系“AppCenter”和Swift依赖关系“可达性”之间是不同的。
x1c4d 1x指令集

相关问题