ビルド キャッシュとは、Android Plugin for Gradle でプロジェクトをビルドするときに生成される特定の出力(パッケージ化していない AAR、pre-dex のかかったリモート依存関係など)を保存する機能です。キャッシュされたファイルは、ビルドシステムが以降のビルドを行う際に再利用できるため、再生成の手間が省け、クリーンビルドの時間が大幅に短縮されます。ビルド キャッシュは継続的インテグレーション サーバー上や、1 台のローカルマシンで複数のビルドプロセスを実行する際も機能します。
Android プラグイン 2.3.0 以降を使用しているプロジェクトでは、デフォルトでビルド キャッシュが有効になっています(明示的にビルド キャッシュを無効にしていない場合)。ただし、次のいずれかのビルド プロパティを下記とは異なる設定にしている場合は、pre-dex のかかったリモート依存関係のキャッシュがプラグインによって無効化されます(これらは各プロパティのデフォルト設定であるため、まったく宣言しなかった場合、pre-dex のかかったリモート依存関係のキャッシュは依然として有効です)。
android { defaultConfig { // If you do enable multidex, you must also set // minSdkVersion to 21 or higher. multiDexEnabled false } buildTypes { <build-type> { minifyEnabled false } } dexOptions { preDexLibraries true } ... } ...
注: プロジェクトでバージョン 2.2.2 または 2.2.3 の Android プラグインを使用している場合は、試験運用版のビルド キャッシュ機能が使用されます。プロジェクトをアップデートして、最新バージョンの Android プラグインを使用してください。
ビルドを高速化するためのその他の方法について詳しくは、ビルド速度の最適化をご覧ください。
ビルド キャッシュの保存場所の変更
Android プラグインはデフォルトで <user-home>/.android/build-cache/
にキャッシュを保存します。次のパス変数(優先度の高いものから記載)のいずれかを設定している場合、Android Studio は代わりに <path-variable>/.android/build-cache/
を使用します。
-
ANDROID_SDK_HOME
-
user.home
-
HOME
Android プラグインはデフォルトの場所にビルド キャッシュを保存するため、Android プラグイン 2.3.0 以降を使用し、かつビルド キャッシュを無効にしていないすべてのプロジェクトで、キャッシュ済みのファイルを共有できます。たとえば、あるプロジェクトで pre-dex のかかった依存関係を作成してキャッシュに保存した場合、それを共有ビルド キャッシュからコピーして別のプロジェクトでも利用できるため、改めて pre-dex をかける必要がありません。
プロジェクトで独自のキャッシュを生成する場合(かつ、それを他のプロジェクトで共有しない場合)は、そのプロジェクトの gradle.properties
ファイルで次のように一意のキャッシュ保存場所を指定します。
// You can specify either an absolute path or a path relative // to the gradle.properties file. android.buildCacheDir=<path-to-directory>
ファイルを編集したら [Sync Project] をクリックして、新しいビルド キャッシュ ディレクトリを作成します。
注: ビルド キャッシュ用のディレクトリを <project-root>/build/
または <project-root>/<module-root>/build/
内に指定しないでください。これらのディレクトリは Gradle で clean
タスクの実行時に削除されます。
特定のプロジェクトとのみキャッシュを共有する場合は、それらのプロジェクトの gradle.properties
ファイルで同じビルド キャッシュ ディレクトリを指定します。
ビルド キャッシュの削除
Android プラグインの clean
タスクでプロジェクトの build/
ディレクトリを削除するのと同様に、cleanBuildCache
タスクを実行してプロジェクトのビルド キャッシュを削除できます。プロジェクトでデフォルト以外のディレクトリをビルド キャッシュ用に指定している場合は、そのプロジェクトでこのタスクを実行しても、指定した場所にあるキャッシュしか削除されません(デフォルトの場所にある共有キャッシュは残ります)。このタスクを実行するには、メニューバーで [View] > [Tool Windows] > [Terminal] を選択して、次のいずれかのコマンドを実行します。
- Windows の場合:
gradlew cleanBuildCache
- Mac または Linux の場合:
./gradlew cleanBuildCache
注: ビルド キャッシュを無効にしている場合は、cleanBuildCache
タスクを利用できません。
ビルド キャッシュの無効化
ビルド キャッシュによりクリーンビルドの速度が向上するため、この機能を無効化することは推奨されません。それでもプロジェクトでビルド キャッシュを無効にする場合は、プロジェクトの gradle.properties
ファイルに次の行を追加します。
// To re-enable the build cache, either delete the following // line or set the property to 'true'. android.enableBuildCache=false
ファイルを編集したら、[Sync Project] をクリックして変更を適用します。
注: ビルド キャッシュを無効にすると、Android プラグインで android.buildCacheDir
プロパティが無視されるため、cleanBuildCache
タスクを利用できなくなります。また、ビルド キャッシュを無効にしても、キャッシュ ディレクトリは自動で削除されません。そのため、ビルド キャッシュを再び有効化するときのためにキャッシュ ファイルを保持しておくことができます。