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

Flutter >=3.16结合版本目录迁移Gradle至AGP8.x/Gradle8.x报错

问题排查:Flutter 3.22 + AGP 8.4 + Gradle 8.6 版本目录配置构建错误

环境版本

  • AGP: 8.4
  • Gradle: 8.6
  • Flutter: 3.22.2

错误信息

class org.gradle.api.internal.project.DefaultProject_Decorated cannot be cast to class org.gradle.api.initialization.Settings ...
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.

错误原因

核心冲突在于**dev.flutter.flutter-plugin-loader插件的加载位置错误**:该插件需要在Gradle的pluginManagement阶段(settings.gradle中)加载,你将其放在了项目级build.gradle的plugins块中,导致Gradle上下文混乱,触发类转换异常。同时,版本目录的别名使用方式未适配Flutter Gradle插件的加载逻辑。

解决步骤

1. 修正settings.gradle配置

在settings.gradle的pluginManagement中引入版本目录,同时将flutter-plugin-loader移回settings.gradle的plugins块:

pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }()

    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }

    // 引入版本目录,让settings阶段能识别插件版本
    resolutionStrategy {
        eachPlugin {
            if (requested.id.namespace == "com.android") {
                useModule("com.android.tools.build:gradle:${libs.versions.agp.get()}")
            }
            if (requested.id.namespace == "org.jetbrains.kotlin") {
                useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${libs.versions.kotlin.get()}")
            }
        }
    }

    // 加载项目根目录的版本目录文件
    def catalogFile = file("../gradle/libs.versions.toml")
    if (catalogFile.exists()) {
        versionsCatalogs {
            create("libs") {
                from(files(catalogFile))
            }
        }
    }
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
}

include ":app"

2. 调整项目级build.gradle

移除dev.flutter.flutter-plugin-loader,仅保留插件别名声明:

plugins {
    alias libs.plugins.android.application apply false
    alias libs.plugins.kotlin.android apply false
}

3. 清理Gradle环境

执行以下操作彻底清理缓存和守护进程:

  • 停止所有Gradle守护进程:
    # macOS/Linux
    ./gradlew --stop
    # Windows
    gradlew.bat --stop
    
  • 删除Gradle缓存目录:
    • macOS/Linux:rm -rf ~/.gradle/caches
    • Windows:删除C:\Users\<你的用户名>\.gradle\caches
  • 回到Flutter项目根目录执行:
    flutter clean
    flutter pub get
    

4. 验证版本目录配置

确保gradle/libs.versions.toml中的版本与环境匹配:

[versions]
agp = "8.4"
kotlin = "1.9.24" # 与AGP 8.4兼容的Kotlin版本

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

内容的提问来源于stack exchange,提问作者usr153.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:14:53