You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:44:50