版本兼容性对照表

Android Gradle Plugin (build.gradle)最低 Gradle 版本推荐 Gradle 版本对应 Flutter 版本
com.android.tools.build:gradle:3.0.x4.14.1Flutter 1.x
com.android.tools.build:gradle:3.1.x4.44.4Flutter 1.x
com.android.tools.build:gradle:3.2.x4.64.6Flutter 1.x
com.android.tools.build:gradle:3.3.x4.10.14.10.1Flutter 1.x
com.android.tools.build:gradle:3.4.x5.1.15.1.1Flutter 1.x
com.android.tools.build:gradle:3.5.x5.4.15.4.1Flutter 1.x
com.android.tools.build:gradle:3.6.x5.6.45.6.4Flutter 1.x-2.x
com.android.tools.build:gradle:4.0.x6.1.16.1.1Flutter 1.x-2.x
com.android.tools.build:gradle:4.1.x6.56.5Flutter 2.x
com.android.tools.build:gradle:4.2.x6.7.16.7.1Flutter 2.x
com.android.tools.build:gradle:7.0.x7.07.0Flutter 2.5+
com.android.tools.build:gradle:7.1.x7.27.2Flutter 2.10+
com.android.tools.build:gradle:7.2.x7.3.37.3.3Flutter 3.0+
com.android.tools.build:gradle:7.3.x7.47.4Flutter 3.0+
com.android.tools.build:gradle:7.4.x7.57.5Flutter 3.3+
com.android.tools.build:gradle:8.0.x8.08.0Flutter 3.10+

Gradle 文件演进变化

1. Gradle 4.x 到 5.x 时期

传统 Groovy 脚本 ([build.gradle](file:///Users/goals/GitHub/Android/flutter_module/android/build.gradle))

// 项目级 build.gradle
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

[gradle-wrapper.properties](file:///Users/goals/GitHub/Android/flutter_module/android/gradle/wrapper/gradle-wrapper.properties)

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

2. Gradle 6.x 时期

[build.gradle](file:///Users/goals/GitHub/Android/flutter_module/android/build.gradle)

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

[settings.gradle](file:///Users/goals/GitHub/Android/flutter_module/android/settings.gradle)

include ':app'
rootProject.name = 'myapp'

3. Gradle 7.x 时期

[build.gradle](file:///Users/goals/GitHub/Android/flutter_module/android/build.gradle)

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

[settings.gradle](file:///Users/goals/GitHub/Android/flutter_module/android/settings.gradle)

include ':app'
rootProject.name = 'myapp'

// 新增插件管理块
pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

4. Gradle 8.x 时期

[build.gradle](file:///Users/goals/GitHub/Android/flutter_module/android/build.gradle)

plugins {
    id 'com.android.application' version '8.0.0' apply false
    id 'com.android.library' version '8.0.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

[settings.gradle](file:///Users/goals/GitHub/Android/flutter_module/android/settings.gradle)

pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = 'myapp'
include ':app'

Gradle Kotlin DSL (.kts) 演进变化

Gradle 5.x-6.x 时期

[build.gradle.kts](file:///Users/goals/GitHub/Android/flutter_module/android/build.gradle)

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:4.0.0")
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

Gradle 7.x 时期

[build.gradle.kts](file:///Users/goals/GitHub/Android/flutter_module/android/build.gradle)

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:7.0.0")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20")
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

[settings.gradle.kts](file:///Users/goals/GitHub/Android/flutter_module/android/settings.gradle)

include(":app")
rootProject.name = "myapp"

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

Gradle 8.x 时期

[build.gradle.kts](file:///Users/goals/GitHub/Android/flutter_module/android/build.gradle)

plugins {
    id("com.android.application") version "8.0.0" apply false
    id("com.android.library") version "8.0.0" apply false
    id("org.jetbrains.kotlin.android") version "1.8.0" apply false
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

[settings.gradle.kts](file:///Users/goals/GitHub/Android/flutter_module/android/settings.gradle)

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

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "myapp"
include(":app")

主要变化总结

  1. 仓库迁移:从 jcenter() 迁移到 mavenCentral()
  2. 插件声明方式:从 buildscript 块迁移到 plugins
  3. 依赖管理:引入 dependencyResolutionManagement
  4. Kotlin DSL:从 Groovy 脚本迁移到 Kotlin 脚本
  5. 版本要求:AGP 和 Gradle 版本要求越来越严格

对于您的 Flutter 项目,建议使用与 Flutter SDK 版本兼容的 Gradle 和 AGP 版本组合。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐