关于 Android Studio 版本 和 Flutter 版本兼容
Execution failed for task ‘:gradle:compileGroovy’____Gradle和 Java 版本不兼容
Gradle和 Java 版本不兼容
注意看官网 环境搭建 对 Android Studio 版本的要求
Flutter 需要完整版本的 Android Studio 来调试和编译 Android 的 Java 或 Kotlin 代码
比如现在官方的要求:
- Android Studio 2023.3.1 (Jellyfish) 或更高版本来调试和编译 Android 的 Java 或 Kotlin 代码。 Flutter 需要完整版本的 Android Studio。
假设你正在使用 旧版本的 Flutter SDK ,而 Android Studio 使用的是最新版本。则可能会导致 java版本与Gradle版本 冲突或者说 不匹配:会报错 gradle:compileGroovy
以及 major version 65
* What went wrong:
Execution failed for task ':gradle:compileGroovy'.
> BUG! exception in phase 'semantic analysis' in source unit 'C:\Users\cat20\Desktop\flutter\packages\flutter_tools\gradle\src\main\groovy\app_plugin_loader.groovy' Unsupported class file major version 65
编译安卓的时候 使用的是 Android Studio 内置的 java 版本,而不是计算机本地的
我们可以输入命令查看:
flutter doctor -v
[√] Flutter (Channel stable, 3.19.3, on Microsoft Windows [版本 10.0.22631.4460], locale zh-CN)
• Flutter version 3.19.3 on channel stable at C:\Users\cat20\Desktop\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision ba39319843 (9 months ago), 2024-03-07 15:22:21 -0600
• Engine revision 2e4ba9c6fb
• Dart version 3.3.1
• DevTools version 2.31.1
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
• Android SDK at C:\Users\cat20\AppData\Local\Android\Sdk
• Platform android-34-ext8, build-tools 34.0.0
• ANDROID_HOME = C:\Users\cat20\AppData\Local\Android\Sdk
• ANDROID_SDK_ROOT = C:\Users\cat20\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
• Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[X] Visual Studio - develop Windows apps
X Visual Studio not installed; this is necessary to develop Windows apps.
Download at https://visualstudio.microsoft.com/downloads/.
Please install the "Desktop development with C++" workload, including all of its default components
[√] Android Studio (version 2024.2)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
[√] IntelliJ IDEA Ultimate Edition (version 2024.1)
• IntelliJ at D:\IntelliJ IDEA 2024.1.4
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
[√] Connected device (4 available)
• J9110 (mobile) • QV713U7T1T • android-arm64 • Android 11 (API 30)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [版本 10.0.22631.4460]
• Chrome (web) • chrome • web-javascript • Google Chrome 131.0.6778.86
• Edge (web) • edge • web-javascript • Microsoft Edge 130.0.2849.68
[√] Network resources
• All expected network resources are available.
! Doctor found issues in 1 category.
可以看到目前 Android Studio 内置Java版本 为17
Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
出于 对旧项目的原因,我的 flutter 并未使用最新的 SDK
输入 flutter --version
,目前我的版本是 3.19.3
,并不是最新的 3.24.4
,所以当我在使用最新版 2024.3.1 的 Android Studio的时候就会导致 Gradle和 Java 版本不兼容,因为 2024.3.1
的 Android Studio 内置Java 版本是21
在这里 给大家提供 Android Studio 历史版本下载地址,如网址打不开的 请自行科学上网
https://developer.android.google.cn/studio/archive
Flutter 3.19.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision ba39319843 (9 months ago) • 2024-03-07 15:22:21 -0600
Engine • revision 2e4ba9c6fb
Tools • Dart 3.3.1 • DevTools 2.31.1
同时,我们需要 了解特定 Gradle 版本支持的 Java 版本:
参考官网:https://docs.gradle.org/current/userguide/compatibility.html#java
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 |
22 | 8.7 | 8.8 |
23 | 8.10 | 8.10 |
24 | N/A | N/A |
知识拓展:
开发 Flutter 时需要注意 Gradle 版本 和 Android Studio 内置 Java 版本 的原因,主要是由于 Flutter 项目在构建 Android 应用时,依赖于 Android 的构建工具链,而这些工具之间存在版本依赖和兼容性要求。
Gradle 和 Android Studio 的作用
- Gradle 的作用:
- Gradle 是 Android 项目的核心构建工具,用于:
- 下载和管理依赖(如支持库、第三方插件)。
- 打包应用(APK 或 AAB 文件)。
- 编译和优化代码。
- 管理多模块项目。
- Gradle 是 Android 项目的核心构建工具,用于:
- Android Studio 的作用:
- Android Studio 是集成开发环境(IDE),提供 Flutter 开发的可视化支持。
- 它包含 Android SDK、构建工具(如 AAPT)、模拟器等。
- 内置的 Java JDK 用于运行 Gradle 和 Android 构建工具链。
为什么 Flutter 需要完整版本的 Android Studio?
- Flutter 和 Android 的深度依赖:
- Flutter 的 Android 部分(如
android/app
)是基于原生的 Android 构建工具链。 - 构建时需要依赖 Android Gradle 插件(AGP)、Gradle 和 Java,因此需要 Android Studio 提供这些工具。
- Flutter 的 Android 部分(如
- Gradle 版本与 Android Gradle 插件的依赖关系:
- Android Gradle 插件(AGP)是连接 Gradle 和 Android SDK 的核心插件,不同版本的 AGP 对应特定的 Gradle 版本。
- 若 Gradle 版本与 AGP 或 Java 版本不兼容,会导致构建失败。
- 内置 Java 版本的影响:
- Gradle 和 AGP 运行时需要 Java 环境。
- Android Studio 提供的内置 Java JDK 与 SDK、工具链是经过测试的,使用其他版本可能出现不兼容。
常见问题
1. Gradle 和 Java 版本不匹配
- 原因:Gradle 的版本对运行时 Java 版本有严格要求,使用过高或过低的版本可能导致错误。
- 解决方法:确保 Gradle 版本与 Java 版本匹配(参考 Gradle 和 Java 版本兼容性)。
2. AGP 与 Gradle 不匹配
- 原因:不同版本的 Android Gradle 插件(AGP)需要特定版本的 Gradle。
- 解决方法:参考 AGP 版本兼容性文档 来设置正确的版本。
3. 构建工具版本低
- 原因:Flutter 依赖的 Android SDK Build Tools 版本低于项目要求。
- 解决方法:更新 Android Studio,确保安装最新的 Build Tools 和 SDK。