不想多说什么,各种傻逼环境搞得人想吐,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,按照示例配置即可。(不保证完全正确!)
android/gradle.properties
Java版本注意其中的 java.home
envorg.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true org.gradle.java.home=C:\\Program Files\\Java\\jdk-17
android/setting.gradle
Android - Gradle 工具包版本注意其中的 com.android.application
,不过这个错误好解决,可以放在最后!
当其他环境配置统一后,最后保证这里版本可用就没问题了。
jsonpluginManagement {
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"
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 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版本,可以通过如下命令修改(请自行修改目录):
shflutter config --jdk-dir="C:\Program Files\java\jdk-17"
大概配置点就是上面的这些,总之就是:保证 Android
+ Gradle
+ Java
环境能够保持通用,同时,要保证 Flutter
中配置的 Java
版本与项目中的配置一致!
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!