升级Xcode 9.3与Swift 4.1后,AudioKit模块导入失败,如何升级至Swift 4.1?
解决AudioKit模块编译版本不兼容:Swift 4.0.3无法在Swift 4.1中导入的问题
我之前也碰到过一模一样的情况,Xcode升级到9.3(Swift 4.1)后,老版本的第三方库因为编译版本不匹配报错,确实挺闹心的。针对你用的AudioKit 4.1,这里有几个可行的解决办法,你可以按顺序尝试:
办法一:升级AudioKit到兼容Swift 4.1的版本
这是最推荐的方案,因为官方通常会在新Swift版本推出后更新库来适配。
如果用CocoaPods管理依赖:
- 打开项目根目录下的
Podfile,把pod 'AudioKit'替换成指定兼容版本的配置,比如:
(AudioKit 4.2及以上版本已经适配了Swift 4.1)pod 'AudioKit', '~> 4.2' - 打开终端,进入项目目录,运行命令:
pod update AudioKit - 等待更新完成后,重新打开Xcode项目,先执行
Cmd+Shift+K清理缓存,再尝试构建。
- 打开项目根目录下的
如果用Carthage管理依赖:
- 打开
Cartfile,修改为:github "AudioKit/AudioKit" ~> 4.2 - 终端运行:
(根据你的项目平台调整,比如macOS、tvOS等)carthage update --platform iOS - 替换项目中旧的AudioKit框架,清理缓存后重新构建。
- 打开
办法二:手动修改AudioKit的Swift编译版本
如果你暂时不想升级AudioKit版本,可以尝试强制修改它的编译设置:
- 在Xcode的项目导航栏中,找到AudioKit的target(如果是CocoaPods导入的,在
Pods分组下); - 切换到Build Settings标签页,搜索
Swift Language Version; - 将该选项的值从
Swift 4.0改成Swift 4.1; - 先单独编译AudioKit框架,再构建你的主项目,记得清理缓存。
办法三:临时降级主项目的Swift版本(不推荐)
如果以上两种办法都暂时无法实施,你可以临时把自己的项目Swift版本降到4.0来兼容,但这样会错过Swift 4.1的新特性:
- 选中你的主项目target,进入Build Settings;
- 搜索
Swift Language Version,设置为Swift 4.0; - 清理缓存后重新构建。
额外提醒
不管用哪种方案,都建议先执行Cmd+Shift+K清理项目缓存,有时候缓存会导致一些看似解决了但依然报错的奇怪问题。如果更新后还有其他报错,检查一下项目里的其他依赖库是否也存在Swift版本不兼容的情况,一并处理即可。
内容的提问来源于stack exchange,提问作者Gerard G




