2025-03-18
编程与技术
00
请注意,本文编写于 45 天前,最后修改于 23 天前,其中某些信息可能已经过时。

目录

解决办法
gradle.properties
setting.gradle
gradle-wrapper.properties
Flutter配置JDK版本
总结

不想多说什么,各种傻逼环境搞得人想吐,Gradle + Java 屎中屎,尤其是出现版本不兼容的情况时!

报错详情:

┌─ Flutter Fix ───────────────────────────────────────────────────────────────────────────────────┐ │ [!] Your project's Gradle version is incompatible with the Java version that Flutter is using │ │ for Gradle. │ │ │ │ If you recently upgraded Android Studio, consult the migration guide at │ │ https://flutter.dev/to/java-gradle-incompatibility. │ │ │ │ Otherwise, to fix this issue, first, check the Java version used by Flutter by running `flutter │ │ doctor --verbose`. │ │ │ │ Then, update the Gradle version specified in │ │ E:\work-gt\gt_yuanlitui_app\android\gradle\wrapper\gradle-wrapper.properties to be compatible │ │ with that Java version. See the link below for more information on compatible Java/Gradle │ │ versions: │ │ https://docs.gradle.org/current/userguide/compatibility.html#java │ │ │ │ │

解决办法

有好多个Java环境、Gradle环境、Android环境、Flutter环境相关的配置细节,不想深究这傻逼玩意,全部列出来,依次排查解决吧,最终使用统一环境基本就可以了~

下面的示例是在 Java17 情况下的正常运行配置,如果你使用 Java17,按照示例配置即可。(不保证完全正确!)

gradle.properties

  • android/gradle.properties Java版本

注意其中的 java.home

env
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true org.gradle.java.home=C:\\Program Files\\Java\\jdk-17

setting.gradle

  • android/setting.gradle Android - Gradle 工具包版本

注意其中的 com.android.application,不过这个错误好解决,可以放在最后!

当其他环境配置统一后,最后保证这里版本可用就没问题了。

json
pluginManagement { def flutterSdkPath = { def properties = new Properties() file("local.properties").withInputStream { properties.load(it) } def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath }() includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "8.1.0" apply false id "org.jetbrains.kotlin.android" version "1.8.22" apply false } include ":app"

gradle-wrapper.properties

  • android/gradle/wrapper/gradle-wrapper.properties Gradle版本

注意其中 distributionUrl ,配置与Java版本相匹配的 Gradle版本,请自行确定版本号。

distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip

Flutter配置JDK版本

使用命令 flutter doctor --verbose 检查当前配置的JAVA版本!

可以看到一部分配置信息如下:

log
[√] Android toolchain - develop for Android devices (Android SDK version 35.0.0) [2.0s] • Android SDK at E:\dependencies\android\ • Platform android-35, build-tools 35.0.0 • Java binary at: C:\Program Files\Java\jdk-17\bin\java This JDK is specified in your Flutter configuration. To change the current JDK, run: `flutter config --jdk-dir="path/to/jdk"`. • Java version Java(TM) SE Runtime Environment (build 17.0.14+8-LTS-191) • All Android licenses accepted.

如果想要修改Java版本,可以通过如下命令修改(请自行修改目录):

sh
flutter config --jdk-dir="C:\Program Files\java\jdk-17"

总结

大概配置点就是上面的这些,总之就是:保证 Android + Gradle + Java 环境能够保持通用,同时,要保证 Flutter 中配置的 Java 版本与项目中的配置一致!

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!