1. 程式人生 > 實用技巧 >通過設定JDK保證不同Android Studio和外部程序共享同一個Gradle後臺程序

通過設定JDK保證不同Android Studio和外部程序共享同一個Gradle後臺程序

使用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

可以通過如下指引瞭解詳細資訊:

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的告警提示資訊也自然消失了。