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

Flutter应用iOS真机运行编译报错 安卓及iOS模拟器运行正常

问题根因

你遇到的报错分为两类:

  1. Starscream相关的都是非致命语法警告,由该依赖旧版本的Swift语法不符合新Xcode编译规范导致,通常不会直接导致编译失败
  2. 核心致命错误是video_player 1.0.1旧版本适配问题:Xcode 12.4+的iPhone真机SDK中AVFoundation框架的头文件结构调整,旧版video_player没有适配该结构,而模拟器SDK的头文件结构未发生变化,所以出现模拟器正常、真机编译失败的情况。
解决步骤
  • 1. 升级video_player依赖

    你当前使用的video_player 1.0.1版本过旧,将pubspec.yaml中的依赖升级到2.4.0以上的稳定版本即可解决AVFoundation编译问题:

    dependencies:
      video_player: ^2.7.2 # 可替换为当前最新稳定版
    

    保存后依次执行命令清理并重新拉取依赖:

    flutter clean
    flutter pub get
    
  • 2. 重置iOS端Pods缓存

    进入项目的ios目录,执行以下命令清理旧的Pods配置和缓存:

    pod deintegrate
    rm -f Podfile.lock
    rm -rf ~/Library/Developer/Xcode/DerivedData/*
    pod install --repo-update
    
  • 3. 处理Starscream警告(可选,仅编译仍失败时操作)

    如果执行完前两步后编译仍然因为Starscream的语法问题失败,在Podfile末尾添加以下配置,屏蔽Starscream的编译警告同时统一Swift版本:

    post_install do |installer|
      installer.pods_project.targets.each do |target|
        # 适配Starscream编译配置
        if target.name == 'Starscream'
          target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '5.0'
            config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = 'YES'
          end
        end
        # 统一所有依赖的最低iOS部署版本,和你项目的配置保持一致即可
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
        end
      end
    end
    

    修改完成后重新执行pod install生效。

  • 4. Xcode配置校验(可选)

    如果以上操作都完成后仍然报错,打开Xcode运行项目的Runner.xcworkspace,做如下检查:

    • 确认Build Settings中的IPHONEOS_DEPLOYMENT_TARGET配置,真机和模拟器的最低版本保持一致,且不低于12.0
    • 确认Build Phases的Link Binary With Libraries列表中存在AVFoundation.framework,状态为Required

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 22:12:03