You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用旧版Toolchain运行Flutter iOS应用时Xcode构建停滞

解决方案

核心原因

EFRSDK是用Swift 5.9.2编译的,与Xcode 16.2默认的Swift 6.0.3编译器ABI(应用二进制接口)不兼容。调整Swift语言版本至4无法解决问题,因为预编译SDK的兼容性依赖编译器版本匹配,而非单纯的语言语法版本。


方法1:指定对应版本的Swift Toolchain编译

  1. 下载Swift 5.9.2的Toolchain安装包,安装到/Library/Developer/Toolchains/目录。
  2. 打开Xcode加载Flutter项目的iOS Runner工程:
    • 进入Xcode > Settings,切换到Components > Toolchains,选中已安装的Swift 5.9.2,重启Xcode。
    • 或者针对Runner Target单独设置:选中Runner Target → Build Settings → 搜索Swift Toolchain,将值改为Swift 5.9.2。
  3. 在Runner Target的Build Settings中搜索Swift Language Version,设置为5.9(与SDK编译版本匹配)。
  4. 更新Flutter项目的ios/Podfile,确保所有target使用Swift 5.9:
    post_install do |installer|
      installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
        target.build_configurations.each do |config|
          config.build_settings['SWIFT_VERSION'] = '5.9'
        end
      end
    end
    
  5. 执行cd ios && pod install,回到项目根目录重新运行flutter run。

方法2:降级Xcode至对应版本

如果Toolchain设置仍有问题,可直接降级Xcode至15.2(对应Swift 5.9.2编译器):

  • 从Apple开发者网站下载Xcode 15.2,解压后拖入/Applications目录(可保留Xcode 16.2,通过右键选择版本打开)。
  • 打开Xcode 15.2加载项目,直接编译运行即可匹配EFRSDK的编译版本。

方法3:封装SDK为Objective-C兼容层

若无法降级Xcode或Toolchain,可将EFRSDK封装成Objective-C静态库:

  1. 创建新的Objective-C Framework项目,导入EFRSDK并编写Objective-C桥接代码,暴露需要调用的接口。
  2. 将编译好的Objective-C Framework导入Flutter项目,通过Swift桥接文件调用Objective-C接口,绕过Swift版本不兼容问题。

内容的提问来源于stack exchange,提问作者Shanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:25:01