Flutter V1转V3项目Android端Gradle不兼容问题求助
将Flutter V1项目升级至V3时Android端启动报错求助
问题概述
要把Flutter V1项目升级到V3,启动旧项目时iOS端正常运行,但Android端抛出不支持Gradle项目的错误,且Android项目中缺少src目录下定义SDK版本的build.gradle文件。
报错信息
Exception: [!] Your app is using an unsupported Gradle project. To fix this problem, create a new project by running
flutter create -t app <app-directory>and then move the dart code, assets and pubspec.yaml to the new project.
当前配置信息
gradle-wrapper.properties版本
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
android目录下的build.gradle内容
buildscript { ext.kotlin_version = '1.3.50' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.8' } } allprojects { repositories { google() jcenter() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir }
flutter doctor输出
[✓] Flutter (Channel beta, 1.24.0-10.2.pre, on macOS 13.3 22E252 darwin-arm, locale it-IT) • Flutter version 1.24.0-10.2.pre at /Users/alessandro_cancelliere/fvm/versions/1.24.0-10.2.pre • Framework revision 022b333a08 (2 years, 7 months ago), 2020-11-18 11:35:09 -0800 • Engine revision 07c1eed46b • Dart version 2.12.0 (build 2.12.0-29.10.beta) [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) • Android SDK at /Users/alessandro_cancelliere/Library/Android/sdk • Platform android-34, build-tools 34.0.0 • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 14.3) • Xcode at /Applications/Xcode.app/Contents/Developer • Xcode 14.3, Build version 14E222b • CocoaPods version 1.12.1 [✓] Android Studio (version 2022.2) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694) [✓] IntelliJ IDEA Ultimate Edition (version 2021.1) • IntelliJ at /Applications/IntelliJ IDEA.app • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart [✓] VS Code (version 1.79.1) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.67.20230601
已尝试方案
- 查阅StackOverflow相关帖子并尝试多种解决方案
- 更换过不同Java版本
- 均未解决问题
解决方案
1. 先升级本地Flutter版本到V3
你当前使用的是Flutter 1.24 beta版本,直接升级到V3是关键前提:
- 如果用FVM,执行
fvm install 3.10.0(或最新稳定版),然后切换版本fvm use 3.10.0 - 直接升级的话执行
flutter upgrade
2. 修复Android项目结构(补上缺失的app模块)
你的项目缺少android/app目录下的build.gradle,这是Flutter Android项目的核心配置文件。可以按以下步骤修复:
- 在项目根目录执行
flutter create --platforms android .(注意末尾的点,会在现有项目中补全Android模块文件) - 执行后会生成
android/app目录,里面包含完整的build.gradle和AndroidManifest.xml
3. 更新Gradle和Android Gradle Plugin(AGP)版本
Flutter 3.x对Gradle版本有要求,需要同步升级:
- 修改
android/gradle/wrapper/gradle-wrapper.properties的distributionUrl:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip - 修改
android/build.gradle中的AGP和Kotlin版本:buildscript { ext.kotlin_version = '1.7.20' // 升级Kotlin版本 repositories { google() mavenCentral() // 替换jcenter(),jcenter已停止服务 } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 适配Gradle 7.5的AGP版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.15' // 升级google-services版本 } } allprojects { repositories { google() mavenCentral() } }
4. 迁移原有配置到新的app/build.gradle
打开新生成的android/app/build.gradle,添加你需要的配置:
- 在
android.defaultConfig块中补充minSdkVersion、targetSdkVersion(Flutter 3.x建议minSdk至少19):defaultConfig { applicationId "你的应用ID" minSdkVersion 19 targetSdkVersion 33 versionCode 1 versionName "1.0" } - 如果之前有其他自定义配置(如签名、buildTypes等),也需要迁移过来
5. 清理缓存并重新构建
执行以下命令清理缓存,避免旧配置干扰:
flutter clean cd android && ./gradlew clean cd .. && flutter pub get flutter run
内容的提问来源于stack exchange,提问作者xelanac
相关产品推荐
相关产品推荐

