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

Flutter iOS模拟器无法运行,Xcode构建失败求助(Xcode16.1兼容问题)

解决Xcode 16.1下Flutter iOS构建失败(url_launcher_ios兼容问题)

问题根源

Xcode 16.1(对应iOS 18 SDK)更新了UIApplication.open方法的签名,新增了@MainActor和@Sendable标记,而你使用的url_launcher_ios 6.3.0版本的Launcher协议方法签名未同步更新,导致类型不兼容报错。

解决方案

1. 升级url_launcher到兼容版本

这是最彻底的解决方案,url_launcher从6.3.1版本开始修复了Xcode 16的兼容问题:

  • 打开项目根目录的pubspec.yaml,修改url_launcher的依赖版本:
    url_launcher: ^6.3.1 # 或直接指定最新稳定版
    
  • 执行命令升级包:
    flutter pub upgrade url_launcher
    

2. 彻底清理缓存并重建

升级包后,需要清理旧的构建缓存和Pod依赖:

  • 执行Flutter清理:
    flutter clean
    
  • 进入iOS目录,删除旧的Pod文件:
    cd ios
    rm -rf Podfile.lock Pods
    pod repo update
    
  • 回到项目根目录,重新获取依赖并构建:
    cd ..
    flutter pub get
    flutter run
    

3. 手动清理pub缓存(如果升级后仍报错)

如果pub缓存里的旧版本包没有被替换,手动删除:

rm -rf ~/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0

然后重复步骤2的清理和构建操作。

4. 临时修复方案(不推荐)

如果暂时无法升级包,可手动修改协议签名适配Xcode 16.1:

  • 打开路径:~/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0/ios/url_launcher_ios/Sources/url_launcher_ios/Launcher.swift
  • 修改Launcher协议的方法签名:
    protocol Launcher {
        func open(_ url: URL, options: [UIApplication.OpenExternalURLOptionsKey: Any], completionHandler completion: (@MainActor @Sendable (Bool) -> Void)?)
    }
    
  • 保存后重新构建项目。注意:此方法会在pub缓存更新后失效,建议优先升级包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:13:16