Flutter运行时出现Gradle Java错误,请求解决方案
Flutter Gradle构建失败问题排查与解决
错误详情
执行flutter run时触发Gradle构建失败,共2项错误:
- 第一项错误:
- 位置:构建文件
/Users/dynamicmethods/.pub-cache/hosted/pub.dev/location-5.0.3/android/build.gradle第26行 - 问题:评估项目
:location时出错 - 详情:无法应用插件
org.jlleitschuh.gradle.ktlint,不存在CommonExtension类型的扩展,当前已注册扩展类型为:[ExtraPropertiesExtension, BasePluginExtension, DefaultArtifactPublicationSet, SourceSetContainer, ReportingExtension, JavaToolchainService, JavaPluginExtension, NamedDomainObjectContainer, LibraryExtension, KotlinAndroidProjectExtension, KotlinTestsRegistry, KtlintExtension]
- 位置:构建文件
- 第二项错误:
- 位置:脚本
/Users/dynamicmethods/Documents/Manan_projects/flutter_projects/flutter/packages/flutter_tools/gradle/flutter.gradle第468行 - 问题:配置项目
:location时出错 - 详情:无法通知项目评估监听器,无法对null对象调用substring()方法,且未指定compileSdkVersion
- 位置:脚本
构建耗时21秒,最终Gradle任务assembleDebug执行失败,退出码为1。
项目配置信息
PUBSPEC
version: 1.0.0+1 environment: sdk: ">=2.12.0 <3.0.0" dependencies: flutter: sdk: flutter cupertino_icons: any provider: any google_maps_flutter: any location: any geolocator: any google_maps_webservice: any pin_code_text_field: any shared_preferences: any sliding_up_panel: any carousel_slider: any connectivity: any flutter_spinkit: any geocoding: any google_maps: any dev_dependencies: flutter_test: sdk: flutter
ANDROID/BUILD.GRADLE
ext.kotlin_version = '1.6.21' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
解决方案
1. 明确指定Android SDK版本
在android/app/build.gradle文件中,补充compileSdkVersion、minSdkVersion和targetSdkVersion的配置,示例:
android { compileSdkVersion 33 defaultConfig { minSdkVersion 21 targetSdkVersion 33 applicationId "your.app.id" versionCode flutterVersionCode.toInteger() versionName flutterVersionName } }
2. 修复ktlint插件兼容问题
问题核心是location插件的ktlint版本与当前低版本Gradle不兼容,有两种处理方式:
方式一:升级Gradle及Android Gradle Plugin
- 修改项目根目录
android/build.gradle中的AGP版本:dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 升级到兼容版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } - 修改
android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
方式二:禁用location模块的ktlint插件
在项目根目录android/build.gradle中添加以下配置,跳过:location模块的ktlint检查:
subprojects { if (project.name == 'location') { plugins { id 'org.jlleitschuh.gradle.ktlint' apply false } } }
3. 固定依赖版本
pubspec中使用any会拉取最新依赖,容易出现版本兼容问题,建议替换为具体版本号,例如:
dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.6 provider: ^6.0.5 google_maps_flutter: ^2.5.0 location: ^4.4.0 # 降级到与当前环境兼容的版本 geolocator: ^9.0.2 google_maps_webservice: ^0.0.20 pin_code_text_field: ^1.8.0 shared_preferences: ^2.2.2 sliding_up_panel: ^2.0.0+1 carousel_slider: ^4.2.1 connectivity: ^3.0.6 flutter_spinkit: ^5.2.0 geocoding: ^2.1.1
4. 清理缓存并重建
执行以下命令清理缓存后重新构建项目:
flutter clean flutter pub get cd android && ./gradlew clean cd .. && flutter run
内容的提问来源于stack exchange,提问作者user22133605
相关产品推荐
相关产品推荐

