Android Studio 2.2でビルドキャッシュが実装されたようです.
http://tools.android.com/tech-docs/build-cache
要点
- デフォルトは disabled
-
dexOptions.preDexLibraries
は設定しないかtrue
に設定しておく-
preDexLibraries
は minSdkVersion 20以上が必要らしい ので,今回は設定なしとしておく
-
-
gradle.properties
にandroid.enableBuildCache=true
を設定 -
~/.android/build-cache
にキャッシュされる - キャッシュをクリアしたい場合は上の領域を削除する
実験
業務で用いているリポジトリを使って試してみた.
ライブラリも含めて70モジュール近くある.
それぞれ ./gradlew clean
後の ./gradlew assembleDebug
の実行時間で比較する.
実験環境
Gradle 2.14.1
gradle plugin 2.2.0
キャッシュ無し設定の実行結果
実行しても当然 ~/.android/build-cache
は作成されなかった.
ビルド時間はだいたいこのくらい.
- Total time: 6 mins 25.472 secs
- Total time: 6 mins 37.435 secs
キャッシュあり設定の実行結果
実行した直後から ~/.android/build-cache
が作られた.
ちゃんとキャッシュされているようだ.
- Total time: 6 mins 13.289 secs
- Total time: 5 mins 30.567 secs
- Total time: 5 mins 57.277 secs
- Total time: 5 mins 19.596 secs
まとめ
1回目のビルドはキャッシュを吐き出さなければいけないので,キャッシュオフより時間が短くなるとは思わなかった.誤差の範囲かもしれないけれど.
だいたい20〜30秒(10%)ほどの短縮になっているが,うーん.CI以外で全モジュールをビルドすることなんてほぼ無いし,1つのアプリのビルドになるとせいぜい数秒の短縮と考えると,恩恵は少なそうかな….
設定や環境によってはガッツリパフォーマンス出るのだろうか.