Gradle ビルドキャッシュや KSP キャッシュを消すとき Gradle デーモン止めないと意味がない件

Android 開発をしていると、Git 操作後や依存関係を変更したあとに KSP(Kotlin Symbol Processing)やビルドキャッシュの問題 に遭遇することがあります。


java.lang.IllegalStateException: Storage for [C:\...\symbolLookups\id-to-file.tab] is already registered

この記事では、Gradle デーモンとキャッシュの関係を整理し、「キャッシュを消したのにビルドが直らない」問題 を回避する方法を解説します。

 

🤔 Gradle デーモンとは何か

Gradle はビルドの高速化のために デーモン と呼ばれるバックグラウンドプロセスを使います。

常駐プロセスとして、次回のビルドでキャッシュを再利用

複数プロジェクトやターミナルで同時に動作可能

Android Studio 再起動だけでは停止しない場合がある

デーモン状態の確認方法


./gradlew --status


No Gradle daemons are running

→ デーモン未起動


PID STATUS INFO
3494 IDLE 8.11.1

→ デーモン起動済み、待機中


PID STATUS INFO
3494 BUSY 8.11.1

デーモン停止は以下で可能:


./gradlew --stop

 

🤔 キャッシュを消しても直らない理由

KSP や Gradle のキャッシュを削除しただけでは、既に動作中のデーモンが古いキャッシュ情報を保持している場合があります。

典型的なケース


1. git rebase でコミットを整理

2. KSP が参照する Room の型情報や生成コードが変更

3. Gradle デーモンが古いキャッシュを保持 → ビルド失敗

つまり、キャッシュを消しても、デーモンが古い情報を持っている限り意味がありません。

 

🤔 解決手順まとめ

① Gradle デーモンを止める


./gradlew --stop

すべての Gradle デーモンを終了

次回ビルド時に新しいデーモンが起動

② KSP キャッシュを削除する


rm -rf .ksp/ */build/kspCaches */build/generated/ksp/

KSP が持つ生成キャッシュを完全に削除

再ビルド時に最新のコードから生成される

③ Android Studio のキャッシュをクリア


File → Invalidate Caches / Restart → Invalidate and Restart

IDE 側のキャッシュもクリア

デーモン再起動時に正しい情報を読み込む

④ KSP のインクリメンタルコンパイルを無効化(必要に応じて)

gradle.properties に追加:


ksp.incremental=false

キャッシュ競合によるエラー(例:java.lang.IllegalStateException: Storage for [C:\...\symbolLookups\id-to-file.tab] is already registered)を回避

 

🤔 Git Rebase 後の KSP ビルドフロー


Git Rebase
    ↓
ソースコード変更
    ↓
KSP キャッシュ古いまま
    ↓ (Gradle デーモン生きている場合)
ビルド失敗 → Storage already registered など
    ↓
./gradlew --stop でデーモン停止
    ↓
KSP キャッシュ削除
    ↓
再ビルド
    ↓
成功

 

🤔 まとめ

Gradle デーモンは Android Studio 再起動だけでは必ずしも止まらない

KSP やビルドキャッシュを消すときは必ずデーモンを止める

典型的な手順:


./gradlew --stop

rm -rf .ksp/ */build/kspCaches */build/generated/ksp/

Android Studio キャッシュクリア

ビルド再実行

これで Git 操作後や依存関係変更後のビルド失敗を防げる

Gradle デーモンの挙動を理解しておくと、「キャッシュ消したのに直らない」問題 に悩まされずに済みます。

ビルド高速化の恩恵を受けつつ、必要なときにはデーモンを適切に制御しましょう。

android - java.lang.IllegalStateException: Storage for [C:\...\symbolLookups\id-to-file.tab] is already registered - Stack Overflow


関連ワード:  AndroidAndroidStudioGitGitHubGradleKMPKotlinおすすめツール開発