注册
iOS

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

免责声明:理论上而言,用这招类推可以建置给早期版本的 iOS。但实际上管不管用我就没法保证了,因为我不是 iOS 程式师。



本文专门给那些需要在新版本系统当中用新版本 Xcode 将祖产专案建置给早期系统版本的资工业者们。


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


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


bf5913342c29327c2cd9858cde82ecc2.png


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


3db81cd838a4b8879ce32738989bdd7e.png


然而,如果是 macOS 10.9 的话,事情还要复杂一个层次:


macOS 14 Sonoma 开始的 SDK 几乎把整个 Foundation 当中的很多基础类型都重写了。这就导致之前那些被 Swift 从 Objective-C 借走的基础类型全部都得重新打上「NS」开头的后缀才可以直接使用。但这还有一个问题:NSLocalizedString 的建构子不能使用了,因为这玩意在 macOS 14 当中也是被(用纯 Swift)彻底重构的基础类型之一。Apple 毫不留情地给这些基础类型都下了全局的「@available(macOS 10.10, *)」的宣告: 

fc55e21125fd566250533d7b3005364b.png


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


e403983490eb282f4008a7dddc4fc41b.png


再修改一下 Xcode 专案当中对 macOS SDK 的指定(不用理会 not found):


df62b81b153710520d2a844577407c62.png


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


$ EOF.


作者:ShikiSuen
链接:https://juejin.cn/post/7242927398294421541
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 个评论

要回复文章请先登录注册