Android Studio 3.2.1でGradleビルドを高速化
ビルドがAndroid Studioで数分間完了するのを待っているように感じたことがありますか?私も。そして、それはかなり迷惑です。幸い、これを改善するために使用できる方法がいくつかあります。AndroidはビルドにGradleを使用します。最新バージョンは4.6で、以前のバージョンよりもパフォーマンスが大幅に向上しています(詳細については、リリースノートを参照してください)。
手順1: Gradleのバージョンを更新するこれを行う簡単な方法は、次の場所に移動することです。モジュール設定を開く(プロジェクト)>プロジェクト構造
更新
Gradleバージョンに変更:4.6
およびAndroidプラグインバージョンに変更:3.2.1
https://services.gradle.org/distributions/gradle-4.6-all.zipからGradleリリース配布物をダウンロード
し、Gradleフォルダーにコピーします。
最後のステップは、[設定]> [Gradle]で差別を追加することです
変更を保存するには、必ず[適用]をクリックしてください。
ステップ2:オフラインモードを有効にし、Gradleデーモンとプロジェクトの並列ビルドをオフラインモードで更新すると、Gradleは最新の更新チェックを無視します。Gradleは常に依存関係を要求し、このオプションがあると、依存関係のためにマシン上にすでにあるものを使用するだけになります。android studio設定からGradleに移動し、[オフライン]ワークボックスをクリックします。
- android studio設定からコンパイラに移動し、コマンドラインボックスに「-オフライン」を追加して、[独立したモジュールを並行してコンパイル]をクリックします。
次のステップは、プロジェクトでGradleデーモンと並列ビルドを有効にすることです。並列ビルドでは、複数のモジュールを含むプロジェクト(Gradleでのマルチプロジェクトビルド)が並列でビルドされます。これにより、大規模なプロジェクトまたはモジュール式プロジェクトのビルドが速くなります。
これらの設定は、Gradleスクリプトディレクトリ(つまり、〜/ .gradle / gradle.properties)でgradle.propertiesという名前のファイルを変更することで有効にできます。これらのオプションの一部(たとえば、Complieモジュールの並列)は、Android Studioから利用可能であり、デフォルトですが、gradle.propertiesファイルにそれらを配置すると、ターミナルからビルドするときにそれらが有効になり、同僚が同じ設定を使用するようになります。しかし、チームで作業している場合は、これをコミットできないことがあります。
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit org.gradle.parallel=true
# When set to true the Gradle daemon is used to run the build. For local developer builds this is our favorite property.
# The developer environment is optimized for speed and feedback so we nearly always run Gradle jobs with the daemon.
org.gradle.daemon=true
デーモンを使用すると、毎回Gradleアプリケーション全体を起動する必要がないため、ビルドの起動が速くなります。Gradle Daemonはデフォルトでは有効になっていませんが、開発者のマシンでは常に有効にすることをお勧めします(ただし、継続的インテグレーションサーバーでは無効のままにしておきます)。このモードに関するFAQは、https://docs.gradle.org/current/userguide/gradle_daemon.htmlにあります。並列ビルド設定は、一部のプロジェクトでは安全でない場合があります。要件は、すべてのモジュールを分離する必要があることです。そうしないと、ビルドが失敗する可能性があります(詳細については、http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projectsを参照してください)。
ステップ3:インクリメンタルdexignを有効にし、メモリ設定を調整するインクリメンタルdexingをオンにすることで、ビルドを高速化できます。モジュールのビルドファイルで:
このオプションをAndroidブロックに追加します。
dexOptions {
incremental true
}
そのdexOptionsブロックでは、dexプロセスのヒープサイズを指定することもできます。次に例を示します。
dexOptions {
incremental true
javaMaxHeapSize "12g"
}
ここで、「12g」は12GBのメモリです。これに関する追加情報は、ここにありますgoogle.github.io/android-gradle-dsl/current/設定ファイルでGradleパラメータを設定することもできます。たとえば、プロジェクトが大きい場合は最大ヒープサイズを増やします。
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
詳細については、https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_propertiesのすべてのパラメーターのリストを参照してください。
手順4:ウイルス対策を無効にするプロジェクトとキャッシュファイルをウイルス対策スキャンから除外することを検討してください。これは明らかにセキュリティとのトレードオフです。しかし、ブランチを頻繁に切り替えると、ウイルス対策がGradleプロセスでの使用を許可する前にファイルを再スキャンするため、ビルド時間が遅くなります(特に、Android Studioの同期プロジェクトとGradleファイルとインデックス作成タスク)。ビルド時間を測定し、ウイルス対策を有効にした場合と無効にした場合のCPUを処理して、関連があるかどうかを確認します。これがお役に立てば幸いです。ビルドのパフォーマンスを改善するための質問やその他のヒントがある場合は、コメントを残してください。
役立つリンク