【问题标题】:Xcode compatibility deprecation?Xcode 兼容性弃用?
【发布时间】:2018-04-27 10:29:09
【问题描述】:

我已经对 Xcode 5.1、6.4、7.0 和各种 macOS 版本进行了多次测试,发现它不像预期的那样向前兼容,并且这种行为在 AFAIK 的任何地方都没有记录。

Xcode 5.1 最高兼容 OS X 10.11
Xcode 6.4 最高兼容 macOS 10.12
Xcode 7.0 最高兼容 macOS 10.13

Apple 似乎故意在较新的 macOS 上禁用 Xcode 以强制更新,但我不明白原因。它在 Xcode 的 plist 中也不可见。 这意味着如果我升级我的操作系统,我就无法拥有一套固定的开发工具,而我仍然可以在较新版本的 Windows 上运行非常旧版本的 Visual Studio。

为什么会这样,是否有任何关于这种行为的文档?

【问题讨论】:

    标签: xcode macos compatibility


    【解决方案1】:

    Apple 和 Microsoft 在如何处理向前和向后兼容性方面有着截然不同的理念。作为一般规则,近年来 Apple Xcode 环境的每个主要版本都只能在其发布的操作系统以及随后的一两个版本的 macOS 上运行(例如,正如您所指出的,Xcode 7仍将在 10.13 上运行)。

    一般来说,如果您要为 macOS(或 iOS)应用程序开发新特性和功能,Apple 鼓励您使用最新的 SDK,然后利用 Xcode Deployment Target 机制以及一些特定于操作系统和语言的工具,例如 #available,可帮助您使用相同的代码库编写可在新旧版本的操作系统上运行的代码。

    您可能同意或不同意这种理念,但这是 Apple 看待其生态系统的方式。

    实际上,如果您继续使用旧版 SDK 进行开发(或支持),那么维护旧版 SDK 原生的构建和测试环境很有用。这可以在专用硬件上或使用虚拟化工具来完成。但是,在许多情况下,可以通过使用 Deployment Target 设置将代码前移到工具的较新版本,从而允许您维护一个保持与旧 iOS/macOS 兼容性的单一代码库,但也可以利用新版本中的最新工具和功能。

    在我们的案例中,我们倾向于尽可能快地与平台 SDK 一起前进。对于我们的 iOS 工作,这通常意味着每年都用新的 iOS 更新 SDK 版本,从而升级我们的编译器链。对于我们的 macOS 产品,我们一直保持与旧版本的向后兼容性(因为新 macOS 的采用往往比新 iOS 慢),这意味着我们目前拥有 Xcode 7.x 和 Xcode 9.x 的开发和测试环境.由于 Xcode 7-Xcode 8 时间框架(与 QuickTime 相关)的特定更改,我们不能仅使用 Deployment Target 来保持我们最旧的兼容性,而不使用旧 Xcode。在不久的将来,我们将决定放弃对旧 macOS 版本的支持,并转而使用仅 Xcode 9 作为我们的基础。

    【讨论】:

      猜你喜欢
      • 2013-04-17
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多