Flutter项目在对Android12进行适配时候,修改了SDK,build tools等相关工具版本后,会要求使用Java11进行编译。
问题是,在更新了jdk后,依然会提示requires Java 11 to run
What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin 'com.android.internal.application'.
> Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
You can try some of the following options:
- changing the IDE settings.
- changing the JAVA_HOME environment variable.
- changing `org.gradle.java.home` in `gradle.properties`.
问题的原因在于,flutter使用的jdk是flutter doctor -v中显示的位置
在命令行执行flutter doctor -v
输出结果中:
Android toolchain - develop for Android devices (Android SDK version 31.0.0)
• Android SDK at /Users/caoxun/Library/Android/sdk
• Platform android-31, build-tools 31.0.0
• Java binary at: /Applications/Android
Studio.app/Contents/jre/Contents/Home/bin/java
//只有这里显示是java 11才有效。如果这里是1.8jdk,那么别的地方配置是对flutter无效的。
• Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
//省略
其中的Java binary at才是指向flutter使用的jdk,它可能与系统中配置的JAVA_HOME并不是同一个路径。
对于使用jenkins等服务器打包脚本的情况来说,问题也是同样的。服务器上可能有多个jdk配置,但真正对flutter生效的依然是flutter doctor -v中显示的路径位置。所以需要对它进行更新或配置。