Androidアプリ開発におけるキャッシュについて整理

Androidアプリのビルド時間を短縮する上で、キャッシュの仕組みを知るのはとても大事だと思い、Androidアプリ開発で使用する下記3つのキャッシュについて調査してみました。

  • Incremental Build
  • Gradle Build Cache
  • Android Studioのシステムキャッシュ

Incremental Build

何者

アプリをビルドするとapp/build/配下に生成されるキャッシュたちのことです。
Gradleのタスク単位でキャッシュされており、Task :app:preBuild UP-TO-DATEのようにタスクの右端にUP-TO-DATEという記述がある場合はキャッシュが使用されたことになります。

どこにキャッシュされるか

app/build/直下に生成されます。
より正確にはモジュールのルートディレクトリの直下に生成されます。

キャッシュのクリア方法

Android StudioでClean Projectを選択するかCLIで./gradlew cleanを実行することでクリアされます。

Gradle Build Cache

何者

Gradleタスクのアウトプットをプロジェクトの外側に持つ仕組みで、プロジェクト間でキャッシュの共有ができるようです。
AGPのメジャーアップデート時などはこのキャッシュが悪さをすることが稀にあります。

どこにキャッシュされるか

~/.gradle/cachesにキャッシュされます。

キャッシュのクリア方法

キャッシュ置き場をごっそり削除します。
GUIで消すかCLIの場合はrm -rf ~/.gradle/caches/でも消せます。

Android Studioのシステムキャッシュ

何者

Android Studio自体が持つキャッシュのことです。
Project Structureの情報などが対象みたいです。

どこにキャッシュされるか

公式サイトを見る限り明記はされていません。が、おそらくAndroid Studioアプリ内のキャッシュだろうと推察します。
Android Studioのアップデート時にキャッシュ削除しますか?的なダイアログが出てきて削除している対象がここで言っているキャッシュの可能性がありますね。

キャッシュのクリア方法

Android Studio上でInvalidate Caches / Restartを選択します。
困ったときはだいたいこれで解決しますね。

参考サイト