如何在支持XCode 12.4的macOS 10.15上升级swift-tools-version
解决XCode 12.4(Swift Tools 5.3)兼容高版本Swift Packages的方案
先说明白:XCode 12.4的Swift工具链版本是绑定死的5.3,没法直接升级它的swift-tools-version,但有两种可行的方式适配要求5.6及以上的Swift包:
1. 降级目标Swift包到支持5.3的版本
- 去目标Swift包的代码仓库(比如GitHub)的release页面,找标注支持Swift 5.3或XCode 12的旧版本
- 在项目的
Package.swift或者XCode的Swift包依赖设置里,指定这个包的具体版本号 - 举个例子:如果用的是Alamofire,找支持Swift 5.3的5.x版本,依赖写法改成:
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.6.4")
2. 修改开源Swift包的swift-tools-version(仅限你能拿到源码的包)
- 把目标Swift包克隆到本地
- 打开包根目录的
Package.swift,把第一行的// swift-tools-version:5.6改成// swift-tools-version:5.3 - 检查包内代码有没有用Swift 5.4及以上的新特性(比如async/await、actor这些),有的话得手动改成兼容5.3的写法
- 在XCode里添加这个本地包作为依赖,替换原来的远程包
重要提醒
- 别尝试替换XCode 12.4的Swift工具链:官方的高版本Swift工具链确实能装在macOS 10.15上,但XCode 12.4不认这些工具链,强行替换只会搞出编译错误,这就是你提到的不要和旧设备更新的toolchain混淆的情况
- 如果目标包还依赖其他高版本Swift包,得递归处理所有依赖的版本或修改,不然会出现依赖冲突
内容的提问来源于stack exchange,提问作者nrudnyk
相关产品推荐
相关产品推荐

