Help us understand the problem. What is going on with this article?

AndroidStudioのGradleビルドを1秒でも速くする方法まとめ

プロジェクトによっては少しプログラムを修正するだけで、ビルドに数分間かかりゲンナリします・・・

1秒でも早くしようと色々ネットの情報を寄せ集めたり、他の開発者から聞いてみたりと色々調べました。
怪しい情報もあるので、試しながら自分の環境で本当に早くなるのか?を確認しつつがよいかと思います。
(間違っていたり、他に情報があればご指摘頂ければと思います。)

1.とにかくCPUとメモリのパワーアップ

GradleビルドはCPUの速さとメモリの容量でスピードが決まるそうです。
マシン、パーツの買い替え、増設、オーバークロックなど物理的変更により速度を上げる。
これができればいうことないです。

2.Instant Runを使う

Instant Runはビルドし直さなくても修正を反映させる方法。
GradleのバージョンやターゲットAPI等を満たせば使えるということですが、
すべて満たしても巨大プロジェクトになると使えなかったり、
修正が反映されなかったりと意外と使えない・・・
小規模プロジェクトでは重宝。

3.gradle.propertiesに設定を記載

お馴染みのやつです。
あまり知られていないですが、
ユーザーディレクトリの下(C:\Users\名前\.gradle)とプロジェクトルートの下と2つあり、
どちらに記載してもよいのですが、同じ項目がある場合はユーザーディレクトリが優先になります。
常に速度を上げたい場合はユーザーディレクトリの下でよいかと思います。

gradle.properties
#プロセス内 dex と増分 Java コンパイルを有効
org.gradle.jvmargs=-Xms2048M -Xmx5120M -XX:MaxPermSize=2048M
#並列ビルドモードを有効
org.gradle.parallel=true
#必要な部分をビルド
org.gradle.configureondemand=true
#デーモンプロセスを使う
org.gradle.daemon=true

-Xmx( 最大ヒープサイズ )は公式
https://developer.android.com/studio/run/
によると
javaMaxHeapSize + 1024MBだそうです。
build.gradleの設定が
javaMaxHeapSize "4g"
だったら 5120Mですね。

-XX:MaxPermSizeは クラスファイルをメモリ上に読み込む最大サイズ。
-Xmsは 起動時のヒープサイズでこちらも設定すると早くなりました。
しかし、Xmsは強制的にメモリをとるので、複数プロジェクトを立ち上げるとメモリ不足で怒られます。

ちなみにタスクマネージャーを見ながら色々数字を上げて行ったら(20Gぐらいまで)、数字を上げれば上げるだけ速くなりました。
途中から気のせいぐらいの速度アップですけど・・・

4.build.gradleでリソースを制限

画像ファイルが多いプロジェクトで有効。

app/build.gradle
defaultConfig {
    resConfigs "ja", "xxhdpi"

などテストする端末のリソースだけをコンパイルするように設定する。
リリース時はもちろん忘れずに戻す。

5.Gradleをオフラインに設定

setting → Build.Execution,Deployment → Gradle
にある[Offline work]にチェックを入れる。
必要になったらチェックを外さないといけないのはやや面倒。

6.ハードディスクをSSDに変更

こちらも物理的な変更。
プロジェクトの保存ディスクをSSDにして読み書きを少しでも早くする。
身近で1割ぐらい早くなったという報告がありましたが、体感なので具体的にはわからない。

7.GradleのキャッシュをRAM DISKに変更

キャッシュの読み書き部分をRAM DISKへのリンクにする。
これも若干早くなる可能性があるとのことだったが、実感できなかった。
結構面倒。

8.不要なプラグインを削除

SDKマネージャーからいらないと思われれるPluginを削除することで高速化ができるとのこと。
確かにCVSとかkotlinとか環境によってはいらない。

9.minSdkVersionを23以上にする

Android SDKの最低バージョンを23に設定することで速くなるらしい。
これはとても効果を実感できた。
これもリリースの時は忘れずに戻す。

10.Gradleのバージョンを上げる。

最新のほうが早いとのことです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away