使用Android Studio經常會在Event Log窗口遇到如下報錯:
21:42 Android Studio is using the following JDK location when running Gradle:
C:\Program Files\Android\Android Studio\jre
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
可以通過如下指引了解詳細信息:
簡單解釋下就是如果后台有一個常駐的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