ビルド キャッシュによるクリーンビルドの高速化

ビルド キャッシュとは、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 タスクを利用できなくなります。また、ビルド キャッシュを無効にしても、キャッシュ ディレクトリは自動で削除されません。そのため、ビルド キャッシュを再び有効化するときのためにキャッシュ ファイルを保持しておくことができます。