Gradle与Flutter版本兼容问题:跨平台编译失败求助
解决Flutter Gradle插件过时及
flutterVersionCode识别错误问题 问题根源
- 配置文件混淆:你将Flutter项目中**根目录
android/build.gradle和app模块android/app/build.gradle**的内容混写在一起,根目录的build.gradle是全局配置文件,不应包含android闭包(这是app模块的专属配置)。 - 插件应用不规范:未使用声明式
plugins块正确引入Flutter Gradle插件,导致过时警告。 - 属性作用域错误:
flutterVersionCode是Flutter插件注入到app模块的属性,根项目无法直接访问,这是编译报错的核心原因。
解决方案
1. 修正根目录android/build.gradle
该文件仅负责全局插件版本声明和仓库配置,修改后内容如下:
plugins { // 声明Android插件版本,不直接应用 id 'com.android.application' version '8.5.0' apply false // 声明Kotlin插件版本,不直接应用 id 'org.jetbrains.kotlin.android' version '1.9.23' apply false // 声明Google Services插件版本,不直接应用 id 'com.google.gms.google-services' version '4.4.2' apply false // 声明Flutter Gradle插件版本(需与你的Flutter SDK版本匹配,例如Flutter 3.22对应7.4.3) id 'dev.flutter.flutter-gradle-plugin' version '7.4.3' apply false } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
2. 修正app模块android/app/build.gradle
该文件负责应用具体插件和配置Android项目,修改后内容如下:
plugins { id 'com.android.application' id 'kotlin-android' // 应用Flutter Gradle插件 id 'dev.flutter.flutter-gradle-plugin' // 应用Google Services插件 id 'com.google.gms.google-services' } android { compileSdkVersion 34 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.semenov.australia" minSdkVersion 16 targetSdkVersion 34 // 这里可以正常使用flutter注入的版本属性 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } buildTypes { release { signingConfig signingConfigs.release } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } buildFeatures { viewBinding true } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23" // 其他项目依赖(如Firebase组件)可添加在此处 }
3. 清理缓存并重新构建
执行以下命令彻底清理缓存,避免旧配置干扰:
flutter clean flutter pub get cd android && ./gradlew clean cd .. && flutter run
内容的提问来源于stack exchange,提问作者SKV
相关产品推荐
相关产品推荐

