gradle.properties
のorg.gradle.java.home
は、Gradleデーモン(Gradle自身の実行環境)が使う JVM を指定します。プロジェクトのコンパイルに使うJDKとは別です。ビルドを速くするため、Gradleはデーモンとして動きます。この設定は、デーモンがどのJavaを使うかをGradleに伝えます。
Android Studioでビルドする際、IDEの設定が優先されます。具体的には、File > Settings > Build, Execution, Deployment > Build Tools > Gradle
の「Gradle JDK」が使われます。Android Studioは独自のGradleデーモンを管理し、そのJDKはIDEの設定で決まります。そのため、gradle.properties
の設定は直接適用されないように見えます。コマンドライン引数での指定が最も優先されます。JAVA_HOME
環境変数は、設定がない場合の候補です。
Gradle 6.7以降では、Java Toolchainsを使うのがおすすめです。これは、プロジェクトが必要なJDKバージョンをビルドスクリプトで指定できる機能です。Gradleは必要なJDKを自動で探し、なければダウンロードしてくれます。
設定方法(build.gradle
):
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17) // 使いたいJDKのバージョン
}
}
この設定で、Gradleは自動でJDKを見つけ、ダウンロードし、コンパイルやテストなどのタスクに適用します。
Gradleが自身の実行環境とプロジェクトのコンパイル環境のJDKを分けているのは、ビルドの安定性と柔軟性を保つためです。Gradleデーモンが特定のJDKで動くことで、システム全体のJDKに左右されず、Gradleの動作が安定します。また、プロジェクトごとに異なるJDKが必要な場合でも対応できます。
よくある問題と解決策:
-
Android StudioのGradle JDK設定:
File > Settings > Build, Execution, Deployment > Build Tools > Gradle
で「Gradle JDK」が正しいか確認します。 -
Gradleデーモンのキャッシュ: ターミナルで
./gradlew --stop
を実行し、Gradleデーモンを停止してキャッシュをクリアします。 -
Java Toolchainsの活用:
build.gradle
でJava Toolchainsを設定し、環境に依存しないJDK管理をしましょう。