報錯
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
Launching lib\main.dart on 2112123AC in debug mode...
Running Gradle task 'assembleDebug'...FAILURE: Build failed with an exception.* Where:
Script 'D:\flutter\flutter_3.29.2\packages\flutter_tools\gradle\flutter.gradle' line: 9* What went wrong:
A problem occurred evaluating script.
> You are applying Flutter's main Gradle plugin imperatively using the apply script method, which is not possible anymore. Migrate to applying Gradle plugins with the declarative plugins block: https://flutter.dev/to/flutter-gradle-plugin-apply* 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 1s
Error: Gradle task assembleDebug failed with exit code 1
解決方案
這個錯誤是因為 Flutter 在最新版本中已經棄用了傳統的 apply from
方式引入 Gradle 插件,要求使用更現代的 Declarative Plugins Block(聲明式插件塊)。以下是完整的解決方案:
錯誤原因分析
You are applying Flutter's main Gradle plugin imperatively using the apply script method...
- 根本問題:Flutter 3.x+ 要求使用新的插件聲明方式
- 影響文件:
android/app/build.gradle
- 關鍵變化:必須用
plugins {}
塊替換apply from
解決方案(分步操作)
第一步:修改 android/app/build.gradle
-
刪除舊代碼:移除這行
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
添加新插件聲明:在文件頂部添加(通常在
android {}
塊之前):plugins {id "com.android.application"id "kotlin-android"id "dev.flutter.flutter-gradle-plugin" // 新增的Flutter插件 }
第二步:修改 android/settings.gradle
-
添加插件管理配置:在文件開頭添加:
pluginManagement {repositories {google()mavenCentral()gradlePluginPortal()}plugins {id "dev.flutter.flutter-gradle-plugin" version "1.0.0" // 版本號根據實際情況調整} }
-
添加依賴路徑:在文件末尾添加:
include ':app' def flutterProjectDir = rootProject.projectDir.parentFile.toPath() def plugins = new Properties() def pluginsFile = new File(flutterProjectDir.toFile(), '.flutter-plugins') if (pluginsFile.exists()) {pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } } plugins.each { name, path ->def pluginDirectory = flutterProjectDir.resolve(path).resolve('android').toFile()include ":$name"project(":$name").projectDir = pluginDirectory }
第三步:檢查/更新 local.properties
確保文件中有正確的 Flutter SDK 路徑:
flutter.sdk=D\:\\flutter\\flutter_3.29.2 # 注意Windows路徑轉義
sdk.dir=C\:\\Users\\YourName\\AppData\\Local\\Android\\Sdk
第四步:清理并重建項目
在終端執行:
flutter clean
flutter pub get
cd android
./gradlew clean # 或 gradlew.bat clean (Windows)
flutter run
備選方案(如果問題依舊)
如果以上修改后仍有問題,可以嘗試臨時降級 Flutter 版本:
flutter version 3.7.12 # 選擇支持舊插件的版本
或更新到最新穩定版:
flutter upgrade
文件結構最終示例
android/app/build.gradle
頂部
plugins {id "com.android.application"id "kotlin-android"id "dev.flutter.flutter-gradle-plugin" // Flutter插件
}def localProperties = new Properties()
...
android/settings.gradle
完整示例
pluginManagement {repositories {google()mavenCentral()gradlePluginPortal()}plugins {id "dev.flutter.flutter-gradle-plugin" version "1.0.0"}
}include ':app'
def flutterProjectDir = rootProject.projectDir.parentFile.toPath()
...
重要提示:這些修改基于 Flutter 3.29.2 的官方適配要求,如果你的版本不同,可能需要微調插件版本號(可在 Flutter 發布日志 中查找對應版本)。