免责声明:理论上而言,用这招类推能够建置给前期版别的 iOS。但实际上管不管用我就无法保证了,由于我不是 iOS 程式师。

本文专门给那些需要在新版别体系傍边用新版别 Xcode 将祖产专案建置给前期体系版别的资工业者们。

Xcode 15 需要打 libarclite 才能给早于 macOS 10.13 的体系建置应用程式。

通用做法就是从 Xcode 14.2 或 Xcode 13 傍边提取出 libarclite 套装,然后植入到 Xcode 15 傍边。先开启 toolchains 资料夹:

让 Xcode 15 拥有建置给 macOS 10.9 的能力

再把 libarclite 的东西放进去(也就是 arc 这个资料夹):

让 Xcode 15 拥有建置给 macOS 10.9 的能力

但是,如果是 macOS 10.9 的话,事情还要杂乱一个层次:

macOS 14 Sonoma 开端的 SDK 几乎把整个 Foundation 傍边的许多根底类型都重写了。这就导致之前那些被 Swift 从 Objective-C 借走的根底类型悉数都得重新打上「NS」最初的后缀才能够直接使用。但这还有一个问题:NSLocalizedString 的建构子不能使用了,由于这玩意在 macOS 14 傍边也是被(用纯 Swift)完全重构的根底类型之一。Apple 毫不留情地给这些根底类型都下了全局的「@available(macOS 10.10, *)」的宣告:

让 Xcode 15 拥有建置给 macOS 10.9 的能力
让 Xcode 15 拥有建置给 macOS 10.9 的能力

这样一来,除了 libarclite 以外,还需要旧版 macOS SDK 才能够。虽然 macOS 13 Ventura 的 SDK 也能够凑合用,但(保险起见)笔者引荐 macOS 12 Monterey 的 SDK:Release macOS 12.3 SDK alexey-lysiuk/macos-sdk (github.com)。该 SDK 的安顿方位:

让 Xcode 15 拥有建置给 macOS 10.9 的能力

再修正一下 Xcode 专案傍边对 macOS SDK 的指定(不必理睬 not found):

让 Xcode 15 拥有建置给 macOS 10.9 的能力

这样应该就能够正常组建了。如果有提示说 Date 不符合最新版别要求的话,把 Date 改成 NSDate 即可。

$ EOF.