PC パソコン

Android Studio「Gradle build daemon disappeared unexpectedly」の解決方法

Android Studioでプロジェクトをビルドしたとき、「Gradle build daemon disappeared unexpectedly」というエラーが表示されることがあります。

このエラーは、ビルド処理中にGradle Daemonが予期せず終了した場合に発生します。

原因としては、メモリ不足、JDKやGradleのバージョン不一致、Gradle Daemonの異常終了、キャッシュの破損、Android StudioやOSによるプロセス終了、プラグインやネイティブ処理の問題などが考えられます。

この記事では、Android Studioで「Gradle build daemon disappeared unexpectedly」が表示されたときの主な原因と解決方法を順番に解説します。

  1. 「Gradle build daemon disappeared unexpectedly」とは?
  2. 原因1:Gradle Daemonのメモリ不足
  3. 原因2:PC全体のメモリが不足している
  4. 原因3:JDKとGradleのバージョンが合っていない
  5. 原因4:Android Gradle PluginとGradleのバージョンが合っていない
  6. 原因5:Gradle Daemonの状態に問題がある
  7. 原因6:Gradleキャッシュに問題がある
  8. 原因7:プロジェクト内の.gradleディレクトリに問題がある
  9. 原因8:Android Studioのメモリ不足
  10. 原因9:OSによってGradle Daemonが強制終了されている
  11. 原因10:Javaプロセスがクラッシュしている
  12. 原因11:ネイティブライブラリの問題
  13. 原因12:Kotlinコンパイラやプラグインの問題
  14. 原因13:外部Gradleプラグインがクラッシュの原因になっている
  15. 原因14:並列ビルドによるメモリ消費が大きい
  16. 原因15:ワーカー数が多すぎる
  17. 原因16:ディスク容量が不足している
  18. 原因17:ウイルス対策ソフトやセキュリティソフトの影響
  19. 原因18:Android Studioを長時間起動している
  20. まず確認したい解決手順
  21. 最初にGradle Daemonを停止する
  22. Gradleのメモリ設定を確認する
  23. GradleとJDKの組み合わせを確認する
  24. 詳細なエラーを表示する
  25. Daemonログを確認する
  26. JVMクラッシュログを確認する
  27. Worker数を減らして確認する
  28. エラー直前のログを確認する
  29. 「Gradle build daemon disappeared unexpectedly」とOutOfMemoryErrorの関係
  30. まとめ

「Gradle build daemon disappeared unexpectedly」とは?

Gradleでは、ビルド処理を高速化するためにGradle Daemonというバックグラウンドプロセスを使用します。

このDaemonがビルド中にクラッシュしたり、OSによって強制終了されたりすると、次のようなエラーが表示されることがあります。

Gradle build daemon disappeared unexpectedly

場合によっては、次のようなメッセージも表示されます。

Gradle build daemon disappeared unexpectedly
(it may have been killed or may have crashed)

このエラーは、Gradleの設定ファイルに単純な記述ミスがある場合とは異なり、Gradleを実行しているプロセスそのものが途中で停止したことを示しています。

原因1:Gradle Daemonのメモリ不足

「Gradle build daemon disappeared unexpectedly」で特に多い原因の1つが、Gradle Daemonに割り当てられたメモリ不足です。

大規模なAndroidプロジェクトや、多数のモジュール・ライブラリを含むプロジェクトでは、ビルド中に大量のメモリを使用することがあります。

メモリが不足すると、Javaプロセスが異常終了する場合があります。

GradleのJVM設定は、gradle.propertiesで指定されていることがあります。

org.gradle.jvmargs=-Xmx2048m

ビルド規模に対してメモリが不足している場合は、この値を見直すことで改善することがあります。

メモリを大きく設定しすぎると、PC全体の空きメモリが不足して逆に不安定になる場合があります。搭載メモリや他のアプリの使用状況も考慮してください。

原因2:PC全体のメモリが不足している

Gradleの設定上は十分なメモリが割り当てられていても、PC全体の空きメモリが不足しているとGradle Daemonが終了することがあります。

Android Studio、エミュレーター、ブラウザ、Docker、仮想マシンなどを同時に使用している場合は、メモリ消費が大きくなることがあります。

不要なアプリケーションを終了し、空きメモリを増やした状態で再度ビルドしてください。

原因3:JDKとGradleのバージョンが合っていない

Gradleのバージョンによって、対応しているJavaのバージョンが異なります。

対応していないJDKでGradleを実行すると、Gradle Daemonが正常に起動できなかったり、ビルド途中で異常終了したりする場合があります。

現在使用しているJavaのバージョンは、次のコマンドで確認できます。

java -version

Gradleが実際に使用しているJVMは、次のコマンドで確認できます。

./gradlew --version

GradleとJDKの組み合わせが対応しているか確認してください。

原因4:Android Gradle PluginとGradleのバージョンが合っていない

Android Studioのプロジェクトでは、Android Gradle Plugin(AGP)とGradleの組み合わせも重要です。

Android Gradle Pluginだけを更新した場合や、Gradle Wrapperだけを変更した場合には、互換性の問題が発生することがあります。

Gradleのバージョンは、通常gradle-wrapper.propertiesで確認できます。

distributionUrl=https\://services.gradle.org/distributions/gradle-8.x-bin.zip

Gradle、Android Gradle Plugin、JDKの3つの組み合わせを確認してください。

原因5:Gradle Daemonの状態に問題がある

長時間使用しているGradle Daemonの内部状態に問題が発生すると、ビルド時にクラッシュすることがあります。

この場合は、一度Gradle Daemonを停止してから再度ビルドします。

./gradlew --stop

その後、再度ビルドしてください。

./gradlew build

原因6:Gradleキャッシュに問題がある

Gradleは、依存ライブラリやビルド情報などをキャッシュとして保存します。

キャッシュが破損している場合、Gradle Daemonが処理中に異常終了することがあります。

依存関係を再取得する場合は、次のコマンドを使用できます。

./gradlew build --refresh-dependencies

Gradle Syncを再実行して改善するか確認してください。

原因7:プロジェクト内の.gradleディレクトリに問題がある

Androidプロジェクト内には、Gradleが使用する.gradleディレクトリが作成されることがあります。

ここに保存されているプロジェクト固有のキャッシュや状態情報に不整合があると、ビルド時に問題が発生する場合があります。

Android StudioやGradleを終了したうえで、プロジェクト内のGradleキャッシュを再生成すると改善する場合があります。

キャッシュを削除する場合は、対象がGradleによって再生成されるキャッシュであることを確認してください。

原因8:Android Studioのメモリ不足

Gradle Daemonとは別に、Android Studio本体のメモリ不足がビルド環境に影響する場合があります。

大規模なプロジェクトを開いた状態でコード解析やインデックス作成、エミュレーターなどが同時に動作すると、システム全体のメモリ使用量が増加します。

Android Studioを再起動したり、不要なプロジェクトやアプリケーションを終了したりしてから再度ビルドしてください。

原因9:OSによってGradle Daemonが強制終了されている

システムの空きメモリが不足した場合、OSがGradleのJavaプロセスを強制終了することがあります。

この場合、Gradle側では原因を把握できず、「daemon disappeared unexpectedly」とだけ表示されることがあります。

特にビルド中にPC全体が重くなる場合は、メモリ使用量や他のプロセスの状態を確認してください。

原因10:Javaプロセスがクラッシュしている

Gradle DaemonはJava Virtual Machine(JVM)上で動作します。

JVMそのものがクラッシュすると、Gradleから見るとDaemonが突然消えたように見えます。

この場合、プロジェクトディレクトリやユーザーディレクトリなどにJVMのクラッシュログが生成されることがあります。

hs_err_pid12345.log

このようなファイルが生成されている場合は、Javaプロセスがクラッシュした可能性があります。

原因11:ネイティブライブラリの問題

AndroidプロジェクトでNDKやJNI、ネイティブライブラリを使用している場合、ネイティブコード側の問題によってビルドプロセスが異常終了することがあります。

CMakeやNDK関連の処理を実行している途中でエラーが発生する場合は、Gradleだけでなくネイティブビルド側のログも確認してください。

原因12:Kotlinコンパイラやプラグインの問題

Kotlinコンパイル中に大量のメモリを使用したり、Kotlin Gradle Pluginとの互換性に問題があったりすると、Gradle Daemonが終了する場合があります。

エラーがKotlinコンパイル中に発生している場合は、Kotlin Gradle Pluginのバージョンや、その直前に表示されているエラーも確認してください。

原因13:外部Gradleプラグインがクラッシュの原因になっている

外部GradleプラグインはGradle Daemonの内部で動作するため、プラグイン側の不具合によってビルドプロセス全体が異常終了する場合があります。

特定のプラグインを追加または更新した直後にエラーが発生した場合は、そのプラグインの設定や対応バージョンを確認してください。

原因14:並列ビルドによるメモリ消費が大きい

Gradleでは複数の処理を並列実行することでビルドを高速化できますが、その分メモリ使用量が増えることがあります。

複数モジュールを含む大規模なプロジェクトでは、同時に多くの処理が動作することでメモリ不足になる場合があります。

gradle.propertiesで並列実行に関する設定が使用されている場合は、その影響も確認してください。

org.gradle.parallel=true

メモリ不足が疑われる場合は、並列実行を見直すことで改善する場合があります。

原因15:ワーカー数が多すぎる

Gradleは複数のWorkerを使用して処理を並列化することがあります。

CPUコア数が多い環境では、多数のWorkerが同時に動作し、メモリ使用量が増える場合があります。

必要に応じて最大Worker数を制限して、ビルドが安定するか確認できます。

./gradlew build --max-workers=2

Worker数を減らしてエラーが発生しなくなる場合は、並列処理によるメモリ消費が原因の可能性があります。

原因16:ディスク容量が不足している

Gradleはビルド中に大量の一時ファイルやキャッシュを作成することがあります。

ディスクの空き容量が不足していると、必要なファイルを書き込めず、ビルド処理が異常終了する場合があります。

システムドライブやプロジェクトを保存しているドライブの空き容量を確認してください。

原因17:ウイルス対策ソフトやセキュリティソフトの影響

セキュリティソフトがGradleの一時ファイルやJavaプロセスを監視・制限することで、ビルド処理に影響する場合があります。

特定の環境だけでエラーが発生する場合は、Gradleキャッシュやプロジェクトディレクトリへのアクセスが妨げられていないか確認してください。

原因18:Android Studioを長時間起動している

Android StudioやGradle Daemonを長時間起動したまま使用していると、内部状態やメモリ使用量の蓄積によってビルドが不安定になる場合があります。

一度Android Studioを終了し、Gradle Daemonも停止してから再起動すると改善する場合があります。

./gradlew --stop

まず確認したい解決手順

「Gradle build daemon disappeared unexpectedly」が発生した場合は、次の順番で確認すると原因を絞り込みやすくなります。

  1. エラー直前のログを確認する
  2. PCの空きメモリを確認する
  3. Android Studioや不要なアプリケーションを再起動・終了する
  4. Gradle Daemonを停止する
  5. java -versionでJavaのバージョンを確認する
  6. ./gradlew --versionでGradleが使用しているJVMを確認する
  7. Gradle・Android Gradle Plugin・JDKの互換性を確認する
  8. gradle.propertiesのメモリ設定を確認する
  9. Gradleキャッシュや依存関係を確認する
  10. Worker数や並列ビルドを確認する
  11. ディスクの空き容量を確認する
  12. JVMクラッシュログが生成されていないか確認する

最初にGradle Daemonを停止する

一時的なGradle Daemonの不具合であれば、Daemonを停止するだけで改善する場合があります。

./gradlew --stop

その後、再度ビルドします。

./gradlew build

Gradleのメモリ設定を確認する

ビルド中にDaemonが繰り返し終了する場合は、gradle.propertiesのJVMメモリ設定を確認してください。

org.gradle.jvmargs=-Xmx2048m

プロジェクトの規模に対してメモリが不足している場合は、使用しているPCの搭載メモリを考慮しながら設定を見直します。

ただし、エラーの原因がJDKの互換性やプラグインの不具合である場合は、メモリを増やしても解決しません。

GradleとJDKの組み合わせを確認する

Javaのバージョンを確認します。

java -version

次に、Gradleが実際に使用しているJVMを確認します。

./gradlew --version

ターミナルのJavaとAndroid StudioのGradle JDKが異なる場合もあるため、両方の環境を確認してください。

詳細なエラーを表示する

通常のビルド出力だけでは原因が分からない場合は、詳細なスタックトレースを表示します。

./gradlew build --stacktrace

さらに詳しいログを確認する場合は、次のようなオプションも使用できます。

./gradlew build --info

さらに詳細なデバッグ情報が必要な場合は、次のオプションもあります。

./gradlew build --debug

Daemonが終了する直前に表示されているログを確認すると、どの処理で問題が発生したのかを特定しやすくなります。

Daemonログを確認する

Gradle Daemonの詳細なログには、Daemonが終了する直前の処理が記録されている場合があります。

エラー出力には、Daemonログの場所が表示されることがあります。

Daemon log file: .../.gradle/daemon/.../daemon-xxxxx.out.log

このログの最後の部分を確認すると、メモリ不足、JVMクラッシュ、プラグイン処理など、原因につながる情報が見つかる場合があります。

JVMクラッシュログを確認する

Java Virtual Machineがクラッシュした場合、次のような名前のログファイルが生成されることがあります。

hs_err_pid12345.log

このファイルが存在する場合は、Gradleの通常エラーではなくJVMそのものがクラッシュした可能性があります。

JDKのバージョン、ネイティブライブラリ、メモリ状態なども確認してください。

Worker数を減らして確認する

並列処理によるメモリ不足が疑われる場合は、Gradle Workerの数を一時的に減らしてビルドできます。

./gradlew build --max-workers=2

これで正常にビルドできる場合は、同時実行される処理が多すぎることでメモリ不足が発生している可能性があります。

エラー直前のログを確認する

「Gradle build daemon disappeared unexpectedly」は、Daemonが消えたという結果を示しているだけで、実際の原因がその直前に発生している場合があります。

例えば、ビルドログの直前に次のような情報が表示されていないか確認してください。

  • OutOfMemoryError
  • Java heap space
  • GC overhead limit exceeded
  • JVM crash
  • NDKやCMake関連のエラー
  • Kotlinコンパイラのエラー
  • 外部プラグインの例外

これらのメッセージがある場合は、「daemon disappeared unexpectedly」ではなく、その直前のエラーが具体的な原因である可能性があります。

「Gradle build daemon disappeared unexpectedly」とOutOfMemoryErrorの関係

Gradle Daemonがメモリ不足によって終了すると、ログにOutOfMemoryErrorが表示される場合があります。

java.lang.OutOfMemoryError: Java heap space

この場合は、GradleのJVMメモリ設定やPC全体の空きメモリを確認してください。

一方、OutOfMemoryErrorが表示されていない場合は、JDKの互換性、JVMクラッシュ、ネイティブライブラリ、プラグインなど別の原因も考える必要があります。

まとめ

Android Studioの「Gradle build daemon disappeared unexpectedly」は、ビルド中にGradle Daemonが予期せず終了した場合に表示されるエラーです。

主な原因として、Gradleのメモリ不足、PC全体のメモリ不足、Gradle・Android Gradle Plugin・JDKのバージョン不一致、Gradleキャッシュ、Daemonの内部状態、JVMクラッシュ、ネイティブライブラリやプラグインの問題などがあります。

まずGradle Daemonを停止して再ビルドし、改善しない場合はjava -versionと./gradlew --versionでJava環境を確認してください。

さらに、gradle.propertiesのメモリ設定、Worker数、PCの空きメモリ、ディスク容量、Daemonログ、hs_err_pidで始まるJVMクラッシュログなどを順番に確認すると、原因を効率よく絞り込むことができます。