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

升级至Flutter v3后项目构建失败问题排查求助

Flutter 2.2.10升级至Flutter 3后构建失败问题

将项目依赖的Flutter版本从v2.2.10升级至Flutter 3后,项目构建抛出如下错误:

FAILURE: Build failed with an exception.
[        ] * Where:
[        ] Script '/Users/user/fvm/versions/3.0.0/packages/flutter_tools/gradle/flutter.gradle' line: 1156
[        ] * What went wrong:
[        ] Execution failed for task ':app:compileFlutterBuildDevDebug'.
[        ] > Process 'command '/Users/user/fvm/versions/3.0.0/bin/flutter'' finished with non-zero exit value 1
[        ] * Try:
[        ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[        ] * Get more help at https://help.gradle.org
[        ] BUILD FAILED in 2m 56s

已尝试的排查操作

  • 升级项目所有依赖版本
  • 执行flutter clean命令
  • 删除项目build目录
  • 清除Android Studio缓存并重启IDE
  • 升级Gradle版本
  • 执行flutter doctor命令,检测结果显示无异常

以上常规方案均尝试后问题仍未解决,以下是项目相关配置文件内容。

相关配置文件

项目根目录build.gradle

buildscript {
    ext.kotlin_version = '1.6.21'
    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.fabric.io/public'
        }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.4'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.10'
        classpath 'io.fabric.tools:gradle:1.31.2'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
        }
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app模块build.gradle

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 32

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        applicationId ""
        minSdkVersion 23
        targetSdkVersion 32
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }


    buildTypes {
        release {
            signingConfig null
        }
        debug {
            signingConfig null
        }
    }

    flavorDimensions "default"

    productFlavors {
       //flavor details
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    testImplementation 'junit:junit:4.12'
    implementation 'com.google.firebase:firebase-messaging:20.1.0'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'com.google.code.gson:gson:2.8.6'
    implementation 'com.microsoft.identity.client:msal:1.6.0'
    implementation platform('com.google.firebase:firebase-bom:29.0.0')
    implementation 'com.google.firebase:firebase-analytics'
}

apply plugin: 'com.google.gms.google-services'

修复方案

这个问题是Android构建工具链版本和Flutter 3不匹配导致的,按以下步骤修改即可解决:

  1. 升级Android Gradle Plugin版本
    根目录build.gradle中,将com.android.tools.build:gradle的版本从3.5.4改为7.0.4,同时找到android/gradle/wrapper/gradle-wrapper.properties文件,把distributionUrl对应的Gradle版本改为gradle-7.0.2-bin.zip,和AGP版本匹配。
  2. 移除废弃的Fabric相关配置
    Fabric服务早已停止维护,Flutter 3不再兼容相关依赖,直接删掉根目录build.gradle中io.fabric.tools:gradle:1.31.2的依赖声明,以及repositories里的https://maven.fabric.io/public仓库地址。
  3. 修正app模块的构建配置兼容问题
    打开app模块的build.gradle做以下修改:
    • 把lintOptions配置块替换为新版AGP要求的写法:
      lint {
          disable 'InvalidPackage'
      }
      
    • 删除buildTypes下release和debug里的signingConfig null两行配置,新版AGP不允许直接将签名配置置空,不需要自定义签名时直接移除该配置即可。
    • 将依赖中的org.jetbrains.kotlin:kotlin-stdlib-jdk7替换为org.jetbrains.kotlin:kotlin-stdlib-jdk8,适配Kotlin 1.6+的默认JDK版本要求。
  4. 清理缓存后重新构建
    在项目根目录依次执行以下命令:
    flutter clean
    cd android && ./gradlew clean
    cd .. && flutter pub get
    
    执行完成后重新构建项目即可正常编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:03:50