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
此问题表明:
- 当前系统默认Java版本为Java 11(或更旧版本)
- Android Gradle插件(AGP 7.0+版本)需Java 17才能运行
- 可能出现在Android Studio、Unity或React Native项目中
- 常见于2023年后新建项目,或AGP升级到新版本后
通用解决方案(首选)
推荐方案
这些步骤适用于大多数Android项目(包括Java/Kotlin原生项目)
1. 安装Java Development Kit 17
- 官方下载:Oracle JDK 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设置
- 打开Android Studio
- File → Settings → Build, Execution, Deployment → Build Tools → Gradle
- 在
Gradle JDK
下拉菜单中选择:Embedded JDK version 17 或 JDK 17 (自定义安装路径)
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项目特别指南
- 确保移除旧版JAVA_HOME环境变量
- 安装最新依赖:bash
npx react-native doctor brew install --cask zulu@17
- 更新
JAVA_HOME
到新路径:bashexport JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
- 验证环境: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
升级注意事项
- 版本匹配要求:
AGP 7.0+ → Java 17 AGP 8.0+ → Java 17/21
- 从React Native 0.73开始需升级到Java 21
- 新项目默认使用最新AGP,需Java 17
- 检查
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