Execution failed for task ‘:gradle:compileGroovy‘____Gradle和 Java 版本不兼容

关于 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 versionSupport for toolchainsSupport for running Gradle
8N/A2.0
9N/A4.3
10N/A4.7
11N/A5.0
12N/A5.4
13N/A6.0
14N/A6.3
156.76.7
167.07.0
177.37.3
187.57.5
197.67.6
208.18.3
218.48.5
228.78.8
238.108.10
24N/AN/A

知识拓展:

开发 Flutter 时需要注意 Gradle 版本Android Studio 内置 Java 版本 的原因,主要是由于 Flutter 项目在构建 Android 应用时,依赖于 Android 的构建工具链,而这些工具之间存在版本依赖和兼容性要求。


Gradle 和 Android Studio 的作用
  1. Gradle 的作用
    • Gradle 是 Android 项目的核心构建工具,用于:
      • 下载和管理依赖(如支持库、第三方插件)。
      • 打包应用(APK 或 AAB 文件)。
      • 编译和优化代码。
      • 管理多模块项目。
  2. Android Studio 的作用
    • Android Studio 是集成开发环境(IDE),提供 Flutter 开发的可视化支持。
    • 它包含 Android SDK、构建工具(如 AAPT)、模拟器等。
    • 内置的 Java JDK 用于运行 Gradle 和 Android 构建工具链。

为什么 Flutter 需要完整版本的 Android Studio?
  1. Flutter 和 Android 的深度依赖
    • Flutter 的 Android 部分(如 android/app)是基于原生的 Android 构建工具链。
    • 构建时需要依赖 Android Gradle 插件(AGP)、Gradle 和 Java,因此需要 Android Studio 提供这些工具。
  2. Gradle 版本与 Android Gradle 插件的依赖关系
    • Android Gradle 插件(AGP)是连接 Gradle 和 Android SDK 的核心插件,不同版本的 AGP 对应特定的 Gradle 版本。
    • 若 Gradle 版本与 AGP 或 Java 版本不兼容,会导致构建失败。
  3. 内置 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。

### 解决方案 当遇到 `Execution failed for task ':verifyGoogleJavaFormat'` 的错误时,通常是因为项目中的代码格式不符合 Google Java Format 工具的要求。以下是可能的原因以及对应的解决方案: #### 可能原因分析 1. **未安装或配置 Google Java Format 插件** 如果项目的构建脚本中启用了 `google-java-format` 插件,但插件未正确加载,则可能导致此错误[^1]。 2. **代码格式不合规** 该任务的主要目的是验证源码是否遵循 Google 编程风格指南。如果某些文件的格式不符合标准,任务会失败并抛出异常[^2]。 3. **Gradle 版本兼容性问题** 不同版本Gradle 对插件的支持可能存在差异。如果使用的 Gradle 或插件版本过旧或过新,可能会引发冲突[^3]。 4. **网络连接问题** 若依赖项无法下载(例如由于代理设置不当),也可能导致任务执行失败[^4]。 --- #### 解决方法 ##### 方法一:检查并修复代码格式 运行以下命令来自动修正代码格式: ```bash ./gradlew googleJavaFormat ``` 这将尝试重新格式化所有不符合规范的代码文件。完成后再次运行构建任务以确认问题是否解决。 ##### 方法二:禁用 verifyGoogleJavaFormat 任务 如果不希望强制执行代码格式校验,可以在本地开发环境中临时跳过此任务: ```bash ./gradlew build -x :verifyGoogleJavaFormat ``` 上述命令通过 `-x` 参数显式排除指定的任务。注意,这种方法仅适用于测试环境;生产环境下仍需确保代码符合编码规范。 ##### 方法三:更新 Gradle 插件版本 确保正在使用最新稳定版的 Gradle 相关插件。编辑根目录下的 `build.gradle` 文件,调整如下内容: ```groovy plugins { id "com.github.sherter.google-java-format" version "0.9" } ``` 同时升级 Gradle 至推荐版本(如 7.x)。可以通过修改 `gradle/wrapper/gradle-wrapper.properties` 中的分发 URL 实现: ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip ``` ##### 方法四:清理缓存并重试 有时残留的编译产物或损坏的依赖库也会引起此类问题。可以尝试清除 Gradle 缓存后再重建项目: ```bash rm -rf .gradle/build/ ./gradlew clean build ``` ##### 方法五:排查网络问题 对于因资源不可达而导致的错误,建议检查互联网连接状态,并为 Gradle 配置合适的镜像仓库地址。例如,在 `~/.gradle/init.d/maven-repos.gradle` 添加以下内容: ```groovy allprojects { repositories { mavenCentral() maven { url 'https://maven.aliyun.com/repository/public/' } } } ``` --- ### 总结 以上提供了多种针对 `:verifyGoogleJavaFormat` 构建失败的处理方式。具体采用哪种取决于实际场景及团队需求。务必优先考虑保持代码质量的前提下解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值