Flutter运行报unrecognized Attribute name MODULE错误问题咨询
问题原因
- 版本不兼容是核心问题:Flutter 2.5.3为2021年发布的旧版本,配套的默认Android Gradle插件(AGP)、Gradle版本均不支持Java 17的字节码特性。错误信息里的
MODULE属性是Java 9+引入的模块系统专属属性,低版本的javac编译器无法识别该属性,最终触发编译失败。 - 第三方插件适配问题:报错指向
geolocator_android插件,该插件的高版本默认采用更高的Java版本规范编译,和项目旧的编译工具链不匹配。
解决方法
方案1:降级JDK版本(最简便,无需修改项目配置)
将本地JDK版本替换为Java 11,这是Flutter 2.5.3版本官方适配的最佳JDK版本,替换后重新执行构建即可。
方案2:升级项目编译工具链(不想换JDK可选择)
- 打开项目根目录下
android/build.gradle文件,将AGP版本升级到7.0+,示例:
dependencies { classpath 'com.android.tools.build:gradle:7.0.4' // 保持其他配置不变 }
- 打开
android/gradle/wrapper/gradle-wrapper.properties文件,将Gradle版本升级到7.3+,示例:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
- 打开
android/app/build.gradle文件,在android配置块下添加Java版本指定:
android { // 原有配置保持不变 compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' } }
方案3:降级geolocator_android插件版本
在项目的pubspec.yaml文件中强制指定低版本的geolocator_android插件:
dependency_overrides: geolocator_android: 2.1.0
执行flutter pub get后重新构建即可。
内容的提问来源于stack exchange,提问作者Ana Cecília
相关产品推荐
相关产品推荐

