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

Azure Pipeline中Flutter Windows构建失败,寻求解决方案

解决方案:Flutter Windows构建缺失头文件问题

针对你的Azure流水线构建Windows应用时出现的fatal error C1083: Cannot open include file错误,以下是可行的解决步骤:

1. 修复Flutter版本与项目SDK限制的兼容性

你的pubspec.yaml中SDK限制为>=2.17.0 <3.3.3,但流水线使用的是Flutter 3.10.2(对应Dart 3.0.x),版本不匹配会导致构建生成的文件异常。

  • 修改pubspec.yaml的environment字段:
    environment:
      sdk: '>=3.0.0 <4.0.0'
    
    或者在FlutterInstall任务中指定兼容的Flutter版本(比如3.3.10):
    - task: Hey24sheep.flutter.flutter-install.FlutterInstall@0
      displayName: 'Flutter Install'
      inputs:
        channel: 'stable'
        version: '3.3.10'
    

2. 添加预构建步骤生成必要的Windows项目文件

在流水线的Flutter Build步骤前,增加脚本生成Windows构建所需的头文件和配置:
修改flutter-build-for-windows.yml,在Enable Windows Desktop Support步骤后添加:

- script: |
    cd MyApplication.UI
    $(FlutterToolPath)/flutter pub get
    $(FlutterToolPath)/flutter build windows --config-only
  displayName: 'Generate Windows Build Config & Headers'

3. 清理旧构建缓存

添加清理步骤避免缓存干扰,在Flutter Install步骤后添加:

- script: |
    cd MyApplication.UI
    rmdir /s /q build
    rmdir /s /q .dart_tool
  displayName: 'Clean Build Cache'

4. 确认代码仓库中Windows目录的完整性

检查本地项目的MyApplication.UI/windows/runner/目录,确保flutter_window.h、utils.h、win32_window.h等文件存在。如果缺失,在本地项目根目录执行:

flutter create --platforms windows .

将生成的windows目录提交到代码仓库。

修改后的完整flutter-build-for-windows.yml示例

parameters:
    entryPoint: ''
    buildNumber: ''

jobs:
- job: Flutter_Build_For_Windows
  pool:
    vmImage: windows-2019
  steps:
  - script: |
      echo buildNumber : 
      echo '${{ parameters.buildNumber }}' 
      echo entryPoint :
      echo '${{ parameters.entryPoint }}'
    displayName: 'Print Parameters'

  - task: Hey24sheep.flutter.flutter-install.FlutterInstall@0
    displayName: 'Flutter Install'
    inputs:
      channel: 'stable'
      version: '3.3.10' # 或者用最新兼容版本

  - script: |
      $(FlutterToolPath)/flutter config --enable-windows-desktop
      $(FlutterToolPath)/flutter doctor
    displayName: 'Enable Windows Desktop Support'

  - script: |
      cd MyApplication.UI
      rmdir /s /q build
      rmdir /s /q .dart_tool
    displayName: 'Clean Build Cache'

  - script: |
      cd MyApplication.UI
      $(FlutterToolPath)/flutter pub get
      $(FlutterToolPath)/flutter build windows --config-only
    displayName: 'Generate Windows Build Config'

  - task: Hey24sheep.flutter.flutter-build.FlutterBuild@0
    displayName: 'Flutter Build windows'
    inputs:
      target: windows
      projectDirectory: MyApplication.UI
      buildNumber: '${{ parameters.buildNumber }}'
      entryPoint: '${{ parameters.entryPoint }}'
  
  - task: CopyFiles@2
    displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
    inputs:
        Contents: |
             MyApplication.UI\build\windows\runner\Release\**\*
             DevOps\Scripts\Flutter Build\**\*
             DevOps\Required_Dlls\*
        TargetFolder: '$(build.artifactstagingdirectory)'
    
  - task: PublishBuildArtifacts@1
    displayName: 'Publish Artifact: Windows copy'
    inputs:
      ArtifactName: Windows-${{ parameters.environment }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:47:04