Flutter更新后Android构建失败:android.multidex不存在及Gradle编译报错
核心错误说明
更新Flutter到3.22.0后遇到两个Android构建问题:
- 执行
flutter run时提示android.multidex不存在,构建失败 - 直接在Android项目目录执行
./gradlew clean时,出现:gradle:compileGroovy任务失败,错误信息:
BUG! exception in phase 'semantic analysis' in source unit '/opt/homebrew/Caskroom/flutter/3.22.0/flutter/packages/flutter_tools/gradle/src/main/groovy/app_plugin_loader.groovy' Unsupported class file major version 65
附flutter doctor中文摘要:
[✓] Flutter(稳定通道,3.22.0,运行于 macOS 14.4.1 23E224 darwin-arm64,区域设置 en-US)
[✓] Android 工具链 - 开发 Android 设备(Android SDK 版本 34.0.0)
[✓] Xcode - 开发 iOS 和 macOS(Xcode 15.0.1)
[✗] Chrome - 开发 Web(无法在 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome 找到 Chrome 可执行文件)
! 找不到 Chrome。尝试设置 CHROME_EXECUTABLE 指向 Chrome 可执行文件。
[✓] Android Studio(版本 2023.3)
[✓] VS Code(版本 1.88.0)
[✓] 已连接设备(3 台可用)
[✓] 网络资源
分步解决方法
1. 解决Gradle Groovy编译错误(Unsupported class file major version 65)
这个错误是Gradle版本与JDK版本不兼容导致的:major version 65对应JDK 21,而旧版Gradle不支持该版本。
- 更新Gradle版本:
打开项目的android/gradle/wrapper/gradle-wrapper.properties文件,修改distributionUrl为Flutter 3.22.0兼容的版本:distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip - 匹配JDK版本:
Android Studio 2023.3默认使用JDK 21,确保Gradle版本支持该JDK(Gradle 8.x支持JDK 17-21)。可在Android Studio中设置项目JDK:- 打开
File > Project Structure > SDK Location - 将
JDK Location切换到Android Studio内置JDK(路径通常为/Applications/Android Studio.app/Contents/jbr/Contents/Home)
- 打开
- 同步项目:点击Android Studio工具栏的
Sync Project with Gradle Files,或执行flutter pub get
2. 解决android.multidex不存在错误
该问题源于Multidex配置缺失或依赖未正确引入:
- 启用Multidex并添加依赖:
打开android/app/build.gradle文件,做以下修改:android { defaultConfig { // 添加这一行 multiDexEnabled true } } dependencies { // 添加Multidex依赖 implementation 'androidx.multidex:multidex:2.0.1' } - 配置Application类:
- 如果你的项目使用默认的
FlutterApplication,无需额外修改 - 如果是自定义Application类,需让它继承
MultiDexApplication,或在attachBaseContext方法中加入:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
- 如果你的项目使用默认的
- 清理重建:执行
flutter clean后再运行flutter run
额外排查点
- 检查Android Gradle插件(AGP)版本:打开
android/build.gradle,确保classpath "com.android.tools.build:gradle:x.x.x"版本为8.2+(如8.2.2),与Gradle版本匹配 - 确认项目中所有第三方插件的Gradle配置与当前项目的Gradle/AGP版本兼容,避免版本冲突
内容的提问来源于stack exchange,提问作者eimmer

