最近在编写 Flutter 项目,发现不同的 Flutter SDK 版本有着不一样的 Gradle 版本,然后不同的 Gradle 版本需要不同的 JDK 版本。只有当三者都一致匹配时,才能正常的完成编译
首先,我们可以确定 Flutter SDK 对应的 Gradle 版本。我们每个下载的 Flutter 的 SDK 中都有这样一个示例工程目录,我们打开其中的一个来查看其官方配置的 Gradle 版本,例如:
flutter\examples\hello_world\android\gradle\wrapper
我们打开 gradle-wrapper.properties 既可以找到对应的 Gradle 版本,例如我这里 3.7.12 版本的 SDK 对应的是
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
可以发现对应的 Gradle 版本是 7.5,我们可以通过这个表来找到对应的 JDK 版本是 18
Java version | Support for toolchains | Support for running Gradle |
---|---|---|
8 | N/A | 2.0 |
9 | N/A | 4.3 |
10 | N/A | 4.7 |
11 | N/A | 5.0 |
12 | N/A | 5.4 |
13 | N/A | 6.0 |
14 | N/A | 6.3 |
15 | 6.7 | 6.7 |
16 | 7.0 | 7.0 |
17 | 7.3 | 7.3 |
18 | 7.5 | 7.5 |
19 | 7.6 | 7.6 |
20 | 8.1 | 8.3 |
21 | 8.4 | 8.5 |
然后我们需要手动设置 Flutter SDK 编译使用的 JDK 路径:
flutter config --jdk-dir=D:\JDK\jdk-18
我们可以运行如下命令检查:
flutter doctor --verbose
得到如下的信息:
[√] Android toolchain - develop for Android devices (Android SDK version 35.0.1)• Android SDK at C:\Users\hucao\AppData\Local\Android\sdk• Platform android-Baklava, build-tools 35.0.1• Java binary at: D:\JDK\jdk-18.0.2\bin\java• Java version OpenJDK Runtime Environment (build 18.0.2+9-61)• All Android licenses accepted.
说明我们已经修改成功了