[Android] ビルドを高速化できるかもしれない方法
背景
ビルド遅いですよね。
私は1ビルド3分くらいかかっているので、その間にトイレに行って帰ってきてもまだビルドが終わっていません。
なんとか早くしたいと思い調べたことを共有します。
対策
- javaバージョンを最新にする
もし古いバージョンを使っているのであればアップデートした方が早くなります。 -
gradleバージョンを最新にする
gradleのバージョンも可能ならアップデートすることで早くなります。 -
Dynamic Versionsを避ける
compile 'com.google.android.gms:play-services:8.4.+'
[x.y.+]のように記述するとgradleが最新を見に行くのでその分遅くなるそうです。
-
Offline workを有効にする
Android Studioで「Preference」→「Build,Execution,Deployment」→「Gradle」と進み offlinework と書かれたチェックボックスにチェックを入れると、最新を確認する作業をしなくなるので、build.gradleに何も追加していない時はチェックを外してビルドをしても影響はありません。
gradle.propertyに以下の記述を追加することで早くなるそうです。
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true org.gradle.configureondemand=true org.gradle.daemon=true
- org.gradle.jvmargs
デーモンプロセスに渡すJVM引数を指定するのでorg.gradle.daemon=trueの時に有効になります。有効デフォルト値はメモリに応じて適切に設定されるようです。 - org.gradle.parallel=true この設定を行うと、Gradleの並列ビルドモードが有効化されます。
- org.gradle.configureondemand=true マルチプロジェクトで利用すると効果が有るそうです。
- org.gradle.daemon=true trueに設定するとデーモンによりビルドが実行されるので2回目以降のビルドが早くなります。
bazelのリリースまで待つ
BazelとはGoogleが社内で使用していたビルドツールをオープンソース版として開発をしているものなので期待しています。
DroidKaigiでbazelについてのお話がありました。
ロードマップのstable版のリリースが伸びたようですね。
それと今は使ってみても早くなかったらしいので、もう少し待つ必要がありそうです。