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

Azure DevOps构建Flutter AAB失败:Gradle未生成.aab文件求助

解决Azure DevOps构建Flutter AAB失败问题

问题核心

构建时提示找不到生成的AAB文件,本质是带Flavor的Flutter项目构建后,AAB的输出路径和流水线默认查找路径不一致,且未将生成的文件同步到流水线 artifacts 目录。

修复步骤

1. 补充依赖安装步骤

在Flutter构建前确保依赖已完整安装,添加flutter pub get步骤:

- task: Hey24sheep.flutter.flutter-command.FlutterCommand@0
  displayName: 'Flutter Pub Get'
  inputs:
    command: 'pub'
    arguments: 'get'
    projectDirectory: '$(PROJECT_DIRECTORY)'

2. 定位并复制AAB文件

带Flavor的项目构建后,AAB默认生成路径为$(PROJECT_DIRECTORY)/build/app/outputs/bundle/googlePlayRelease/(其中googlePlay是你的Flavor名称)。添加复制和发布步骤,将文件同步到流水线 artifacts:

- task: CopyFiles@2
  displayName: 'Copy AAB to Artifacts'
  inputs:
    SourceFolder: '$(PROJECT_DIRECTORY)/build/app/outputs/bundle/googlePlayRelease'
    Contents: '*.aab'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  displayName: 'Publish AAB Artifact'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'AndroidAAB'
    publishLocation: 'Container'

3. 验证Flavor配置一致性

确保yaml中buildFlavor: 'googlePlay'与Android项目android/app/build.gradle中的Flavor定义完全一致,示例gradle配置片段:

flavorDimensions "environment"
productFlavors {
    googlePlay {
        dimension "environment"
        // 其他自定义配置
    }
}

完整修改后的YAML

name: $(Rev:r)

trigger:
  - pipelines/production
  - pipelines/demo

pool:
  vmImage: 'windows-latest'

variables:
  PROJECT_DIRECTORY: "src/Flutter/Naadel"
  FLUTTER_VERSION: 3.19.2

stages:
  - stage: 'Build_Android'
    displayName: Build_Android_Version

    jobs:
      - job: Build
        displayName: BuildingAndroid
        steps:
          - task: JavaToolInstaller@0
            inputs:
              versionSpec: '11'
              jdkArchitectureOption: 'x64'
              jdkSourceOption: 'PreInstalled'

          - task: Hey24sheep.flutter.flutter-install.FlutterInstall@0
            displayName: 'Flutter installing'
            inputs:
              mode: 'auto'
              channel: 'stable'
              version: 'custom'
              customVersion: '$(FLUTTER_VERSION)'

          - task: Hey24sheep.flutter.flutter-command.FlutterCommand@0
            displayName: 'Flutter Pub Get'
            inputs:
              command: 'pub'
              arguments: 'get'
              projectDirectory: '$(PROJECT_DIRECTORY)'

          - task: Hey24sheep.flutter.flutter-build.FlutterBuild@0
            inputs:
              target: "aab"
              buildFlavor: 'googlePlay'
              projectDirectory: "$(PROJECT_DIRECTORY)"
              entryPoint: "lib/main.dart"
              iosCodesign: false
              buildNumber: "$(Build.BuildNumber)"

          - task: CopyFiles@2
            displayName: 'Copy AAB to Artifacts'
            inputs:
              SourceFolder: '$(PROJECT_DIRECTORY)/build/app/outputs/bundle/googlePlayRelease'
              Contents: '*.aab'
              TargetFolder: '$(Build.ArtifactStagingDirectory)'

          - task: PublishBuildArtifacts@1
            displayName: 'Publish AAB Artifact'
            inputs:
              PathtoPublish: '$(Build.ArtifactStagingDirectory)'
              ArtifactName: 'AndroidAAB'
              publishLocation: 'Container'

额外检查点

  • .gitignore排除build文件夹是正常操作,无需上传到仓库,流水线会在构建时自动生成该目录。
  • 若构建仍失败,可在FlutterBuild步骤添加arguments: '--verbose'参数,查看详细日志定位具体错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:52:44