通过设置JDK解决存在多个Gradle后台进程的问题

时间:2022-07-23
本文章向大家介绍通过设置JDK解决存在多个Gradle后台进程的问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

使用Android Studio经常会在Event Log窗口遇到如下报错:

21:42	Android Studio is using the following JDK location when running Gradle:
			C:Program FilesAndroidAndroid Studiojre
			Using different JDK locations on different processes might cause Gradle to
			spawn multiple daemons, for example, by executing Gradle tasks from a terminal
			while using Android Studio.
			More info...
			Select a JDK from the File System
			Do not show this warning again

可以通过如下指引了解详细信息:

https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:why_is_there_more_than_one_daemon_process_on_my_machine

简单解释下就是如果后台有一个常驻的gradle守护进程,可以提高我们构建效率。因为这样不但可以避免每次都重新启动JVM,并且可以缓存项目结构、文件、任务等信息。每次启动AS的时候,你可能会注意到如下这个提示,其实就是AS默认打开了gradle守护进程:

但是如果使用守护进程特性会有一个问题,就是可能会出现多个守护进程的场景,这是因为守护进程可能在某些方面无法满足请求构建环境。比如如果守护进程运行在Java 8运行时,但是请求的环境调用Java 10,那么守护进程是不兼容的,必须启动另一个。此外,Java运行时的某些属性在JVM启动后无法更改。这也可能导致出现多个守护进程。

为了避免出现这种情况,一个最好的解决方式时我们每次使用gradle进行项目构建时,尽量使用相同的JDK配置。如果我们在命令行中使用gradle,会自动使用JAVA_HOME环境变量指向的JDK,如果在AS中使用gradle,使用的是如下指向的JDK

所以为了两者一致,我们需要将此处的JDK改为JAVA_HOME环境变量指向的JDK。修改完之后AS的告警提示信息也自然消失了。

另外注意下从Gradle 6.3版本才开始正式支持JDK 14: https://docs.gradle.org/6.3/release-notes.html