使用AudioKit 5与Xcode 12 beta 6构建iOS14项目报错求助
针对你在Xcode 12 beta 6 + iOS 14项目中使用AudioKit 5(master分支)XCFrameworks遇到的警告和链接错误,结合你在Xcode 11 + iOS 13.7环境下正常运行的情况,大概率是以下几个原因导致的:
Swift版本ABI不兼容
Xcode 12 beta 6搭载的Swift版本(通常是Swift 5.3的测试版本)和你之前使用的Xcode 11(对应Swift 5.1/5.2)、以及AudioKit XCFrameworks编译时依赖的Swift版本存在ABI(应用二进制接口)差异。你遇到的_swiftoverride_class_getSuperclass和swift::swift51override_conformsToSwiftProtocol这类符号都属于Swift runtime层面的核心函数,不同Swift版本的runtime实现有明显变更,当XCFrameworks是用旧版Swift编译的,在新版Xcode中链接时就会找不到这些适配新runtime的符号。XCFrameworks未适配Xcode 12 beta + iOS 14 SDK
AudioKit master分支提供的XCFrameworks可能是基于正式版Xcode或者更早的Xcode 12 beta版本编译的,没有针对Xcode 12 beta 6的iOS 14 SDK做适配。那个无法找到或使用自动链接库'swiftAVFoundation'的警告也侧面说明:XCFramework中缺少对应这个SDK版本的Swift绑定库,导致Xcode无法自动定位并链接到正确的依赖组件。Xcode 12 beta的链接机制变更
Xcode 12 beta系列对链接流程、自动链接规则做了不少调整,以适配iOS 14的新特性。可能在Xcode 11中默认生效的链接设置,在Xcode 12 beta中需要手动调整:- 检查
Build Settings中的Other Linker Flags,尝试添加-lswiftAVFoundation手动指定链接该库 - 确认
Enable Bitcode设置是否和XCFrameworks的编译配置一致(如果XCFrameworks关闭了Bitcode,你的项目也需要同步关闭) - 检查
Build Settings中的Swift Language Version是否设置为Xcode 12 beta对应的版本(比如Swift 5.3)
- 检查
内容的提问来源于stack exchange,提问作者Juan

