如何在最新的 macOS 服务器上运行旧版本的 Xcode?
Posted
技术标签:
【中文标题】如何在最新的 macOS 服务器上运行旧版本的 Xcode?【英文标题】:How do I run an old version of Xcode on the latest macOS Server? 【发布时间】:2016-09-26 22:47:47 【问题描述】:当我尝试将 Xcode 7.3.1 连接到 macOS Server 5.2(2016 年 9 月 20 日发布)时,我收到以下错误消息:
“您选择的 Xcode 版本低于服务器支持的最低版本。”
由于无法轻松重构的 swift 相关问题,我无法将 Xcode 8.x+ 用于该项目。
如果没有办法避免这个问题,那么有没有办法下载支持 Xcode 7.3.1 的旧版 MacOS Server?我找不到任何下载旧版本 macOS 服务器的方法。
【问题讨论】:
“不能轻易重构的 Swift 相关问题”? Xcode 7.3.1 有 Swift 2.2,Xcode 8 有 Swift 2.3,它们几乎是一样的。 不幸的是,对于我正在使用的数百个 swift 组件,“几乎相同”并不能转换为“在 Xcode 8 中编译和运行”。 Swift 3 是 Xcode 8 的“新 Swift 版本”,它带来了很大的变化。 Swift 2.3 适用于像您或我这样的人,由于兼容性原因(或者只是出于任何原因不想升级)还不能升级,因此他们可以将旧的 Swift 代码与 Xcode 8 一起使用。我被困住了我自己向后兼容,因为我使用了许多旧的 Swift 2.2 cocoapods(顺便说一下,它们只是在你在他们的构建设置中添加“SWIFT_VERSION = 2.3”之后运行)。更改绝对是微小的,请运行迁移助手并立即看到您的代码在 Xcode 8 上运行。 不,你不能得到旧版本的 Xcode 服务器,我找了你。你甚至可以在苹果档案中找到它。如果您坚持使用旧版本的 OS X Server 5.1,您可以在各种盗版网站上轻松找到它。但我建议你只使用你的代码作为 Swift 2.3。 【参考方案1】:如果它甚至不在 Apple 存档 (https://developer.apple.com/download/more/) 中,您将找不到 OS X Server 5.1。
您的方法是使用 Swift 2.3 作为“旧版 Swift 语言版本”,而不是为您的项目使用 Swift 3。
除了 Swift 3 之外,Xcode 8 还支持使用 Swift 2.3 进行开发,这是对 Swift 2.2 语言的一次小更新,旨在与适用于 macOS Sierra、ios 10、tvOS 10 和 watchOS 3 的新 SDK 一起使用。这旨在允许开发人员立即迁移到这些最新的 SDK,即使对于可能在 Swift 2.2 开发后期且尚未准备好迁移到 Swift 3 的项目。Xcode 8 可以将您的代码迁移到新的 Swift 2.3 更改,主要与可空性清晰度有关已添加到新的 SDK 中。
来源:https://developer.apple.com/swift/blog/?id=36
如果您使用的是 CocoaPods,请将其添加到您的 Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3'
config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = 'YourTeamID/'
end
end
end
请尝试使用迁移助手(编辑 -> 转换 -> 到当前的 Swift 语法...并选择“转换为 Swift 2.3”)。
【讨论】:
看起来你遇到的问题和我的很相似。不幸的是,我无法将可可豆荚的代码自动转换为 swift 2.3。负责该代码的团队正在努力对其进行转换,但至少仍需要数十个工时进行转换。因此,我目前无法在这个特定项目中使用 Xcode 8。 您将其添加到您的 Podfile 并运行您的 pod 安装。在大多数情况下,Pod 仍然是 Swift 2.2,但上面的 Podfile 中的扩展添加了标签SWIFT_VERSION = 2.3
并告诉 Xcode 使用您的团队配置文件进行配置,它们应该运行(在我的例子中是 9 个 Swift 2.2 Pod ,他们确实只是跑了)。这甚至不能称为“转换”。它只是告诉 Xcode,它仍然是旧版本。在此之后可能会有一些非常小的调整,但它们会成为问题,Xcode 已经提供了自动修复它们。你试过了吗?
迁移到 Swift 2.3 不可能需要几十个工时,为了防止这种情况发生,这是“旧版”又名 2.3 的唯一目的。将来您仍然必须升级到第 3 版,但目前您不必这样做。我确实认为团队错误地将迁移到 Swift 2.3 与迁移到 Swift 3。以上是关于如何在最新的 macOS 服务器上运行旧版本的 Xcode?的主要内容,如果未能解决你的问题,请参考以下文章
在最新版本的 Mac OS X 上安装旧版本的 MySQL 5.5
我的 MainActivity 在使用 android 旧版本(例如 oreo)时滞后,但在最新版本中运行良好,如何解决?