Skip to content

Android Gradle插件要求Java17的解决方案

问题描述

在创建新Android项目或执行Gradle构建时,开发者常会遇到以下错误:

An exception occurred applying plugin request [id: 'com.android.application']
Failed to apply plugin 'com.android.internal.application'.
Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
Your current JDK is located in C:\Program Files\Java\jdk-11.0.13

此问题表明:

  1. 当前系统默认Java版本为Java 11(或更旧版本)
  2. Android Gradle插件(AGP 7.0+版本)需Java 17才能运行
  3. 可能出现在Android Studio、Unity或React Native项目中
  4. 常见于2023年后新建项目,或AGP升级到新版本后

通用解决方案(首选)

推荐方案

这些步骤适用于大多数Android项目(包括Java/Kotlin原生项目)

1. 安装Java Development Kit 17

2. 配置系统环境变量(Windows)

powershell
# 1. 打开系统环境变量编辑界面
win + R → 输入"sysdm.cpl" → 高级 → 环境变量

# 2. 创建/修改用户变量
变量名: JAVA_HOME
变量值: C:\Program Files\Java\jdk-17.0.10  # 替换为实际安装路径

# 3. 更新Path变量
Path → 编辑 → 新建 → 添加: %JAVA_HOME%\bin

# 4. 验证安装
cmd输入: java -version
# 应输出: java version "17.0.X"

3. Android Studio设置

  1. 打开Android Studio
  2. File → Settings → Build, Execution, Deployment → Build Tools → Gradle
  3. Gradle JDK下拉菜单中选择:
    Embedded JDK version 17
    
    JDK 17 (自定义安装路径)
    Android Studio Gradle JDK设置图示

4. 清除Gradle缓存

bash
# Windows
rmdir /s /q "%USERPROFILE%\.gradle\caches"

# macOS/Linux
rm -rf ~/.gradle/caches

不同平台专属方案

针对macOS用户

bash
# 使用Homebrew安装OpenJDK
brew install --cask zulu@17

# 验证JDK路径
brew info --cask zulu@17
# 输出路径如: /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home

# 配置环境变量
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc

针对Ubuntu/Linux

bash
# 安装OpenJDK 17
sudo apt update
sudo apt install openjdk-17-jdk

# 设为系统默认
sudo update-alternatives --config java
# 从列表中选择Java 17的编号

# 验证版本
java -version
# 输出: OpenJDK version "17.0.X"

通过gradle.properties指定JDK

properties
# 添加此行并替换为你的JDK17实际路径
org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17.0.10
# 或Android Studio自带JDK
org.gradle.java.home=C\:\\Program Files\\Android\\Android Studio\\jbr

React Native项目特别指南

  1. 确保移除旧版JAVA_HOME环境变量
  2. 安装最新依赖:
    bash
    npx react-native doctor
    brew install --cask zulu@17
  3. 更新JAVA_HOME到新路径:
    bash
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
  4. 验证环境:
    bash
    cd android
    ./gradlew --version | grep "Java home"
    # 应输出Java 17的路径

Unity项目临时解决方案

谨慎使用

此方法可能破坏依赖旧Java版本的程序

procedure
1. 打开报错提示中的JDK路径
2. 关闭Unity
3. 备份原JDK文件夹
4. 将JDK17安装目录内容复制替换到原JDK目录
5. 重启Unity

解决方案对比

方法推荐程度适用场景风险
Android Studio配置JDK★★★★★在IDE中开发Android项目
gradle.properties指定JDK★★★★☆需要项目级自定义
系统环境变量修改★★★★☆多项目共享环境
Unity目录替换法★★☆☆☆紧急修复/无其他方案

验证解决方案

确保所有配置生效:

bash
# 在项目根目录执行
./gradlew --version | findstr "Java home"  # Windows
./gradlew --version | grep "Java home"     # macOS/Linux

# 成功输出示例
Java home: C:\Program Files\Java\jdk-17.0.10

升级注意事项

  1. 版本匹配要求
    AGP 7.0+ → Java 17
    AGP 8.0+ → Java 17/21
  2. 从React Native 0.73开始需升级到Java 21
  3. 新项目默认使用最新AGP,需Java 17
  4. 检查build.gradle中的Android配置:
    gradle
    // 支持最新特性的推荐配置
    android {
       compileSdk = 34
       buildToolsVersion = "34.0.0"
    }

建议优先使用Android Studio内嵌的JetBrains Runtime(JBR),避免环境变量冲突问题,通常位于:

C:\Program Files\Android\Android Studio\jbr

正确配置后,Gradle构建将成功执行:

bash
BUILD SUCCESSFUL in 15s