macOS:如果我的应用程序动态链接到它们,我应该发布系统库吗?

macOS: Should I ship system libs if my app dynamically links to them?

我的应用程序使用了几个第三方动态库,我将它们包含在我的应用程序包中。但是我自己的代码和第三方库所依赖的系统库呢?

示例包括

我是否应该在应用程序包的所有调用者二进制文件中捆绑这些并更新它们的引用路径?

如果必须,我是否应该为每个 macOS 版本创建应用程序二进制文件?

我的想法是我不应该强迫我的用户安装Xcode,但我不确定那些系统框架和动态库是与OS捆绑在一起还是通过[=安装28=] ...

系统库保证 运行 在您的应用程序支持的任何系统上(当然它们安装在任何 Mac 上,因为系统本身使用它们)。因此,不,您不必捆绑这些库。相反,您必须仔细决定您的代码准备从哪个版本的 OS 支持这个或那个版本的库。

当一段代码需要在运行时针对不同版本的库做不同的处理,你可以使用这样的形式让你的代码与当前环境同步:

if (@available(macOS 10.14, *)) {
    //codes supporting any system since 10.14
} else {
    //codes supporting earlier systems
}

你不能捆绑这些。 /System/usr/lib 中的任何内容都是操作系统的一部分,而不是 Xcode。它们不打算复制到其他系统。