【AS】Error:Android Gradle plugin requires Java 11

3,682 阅读2分钟

这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

1 (1).gif

最近开始折腾Jetpack,Clone一个MVVN的项目,AS打开,Terminal编译出现下述错误:

原因是 AGP 7.0后必须使用 Java 11,而跳过版本5、6的原因是让 AGP的版本号与Gradle版本号相匹配,比如:AGP 7.x对应Gradle 7.x的API。具体讲解可见:《AGP 7.0: Next major release for the Android Gradle plugin》

使用 AGP 7.0(Android Gradle Plugin) 构建时需要 JDK 11才能运行Gradle,AS更新到 Android Studio Arctic Fox,直接捆绑了 免费的OpenJDK 11 并将Gradle配置默认使用它,一般就可以直接用了,如果不行再进行 手动配置 亦可~

Tips:从错误提示就可以知道有三种方法可以解决~

0x1、AS手动配置

依次选中项目右键:Open Module Settings

接着新旧AS会有区别,先是 老版本

OpenJdk 11可以到这里下载:Archived OpenJDK General-Availability Releases

然后是 新版本

点开,Gradle JDK选择11

一路OK,重新Rebuild项目即可,当然也可以到 Settings/Preferences,如图所示处修改~

上述入口还可以从Gradle的设置进入:

0x2、修改gradle.properties

手动配置完AS,可能出现一种情况:AS可以跑,Terminal跑 gradlew clean build 还是报错,可以在 gradle.properties 文件中指定java home的路径:

# Windows示例
org.gradle.java.home=D\:\\Coding\\AS\\jre

# Mac、Linux示例
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home

这样做的好处是,电脑全局的JAVA_HOME环境变量不受影响,依旧可以是jdk 1.8,起来依赖到的应用不受影响。

0x3、修改JAVA_HOME

当然,你硬要把环境变量改成11亦可,如:

重启AS,然后Terminal键入:gradlew -v

可以看到此时的JVM为:11.0.11,其他系统修改环境变量,MAC修改示例如下:

# 查看jdk所在位置
/usr/libexec/java_home -V

# 设置环境变量
vi ~/.bash_profile

# 把jdk1.8.0_172.jdk改成对应11的目录
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# esc退出输入模式,键入下述目录保存
wq

# 更新配置文件
source ~/.bash_profile

参考文献