Android Studio Gradleビルドのスピードアップ


163

最後の更新(6月25日からのビルド)以降、AndroidスタジオGradleでの変更は非常に遅くなっています。また、ファイルを編集してキーアップ時に再コンパイルすると、変更を自動追跡するようにも見えます。

i5では、各変更に数分かかります。

Gradleの変更をスピードアップする方法はありますか?



1
時間をかけて回答と質問を読む人にとって、これは@Dave Jarvisによって提案されたように、重複した質問ではありません。しかし、それはASの古いベータ版と非常に関連があり、おそらく現在のバージョンにはほとんどまたはまったく関係がありません。
Einar Sundgren、2015年


回答:


41

開発者はそれに取り組んでいます。私がこの回答に投稿したように、現時点での最速の解決策は、コマンドラインからgradleを使用することであり、開発していないすべてのモジュールをバイナリライブラリに切り替える必要があります。g + では、それについて開発者との議論があります。



99

間違いなく違いを生む:方法... Gradleのビルド時間を短縮する

gradle.properties次のディレクトリにという名前のファイルを作成するだけです。

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

次の行をファイルに追加します。

org.gradle.daemon=true

2
いい答えだ。さらに詳しい説明については、この SOの回答を確認してください。
Sufian

12
リンクから:「注:これはコンソールビルドにのみ影響します。AndroidStudioは常にGradleデーモンを使用します(設定によっては、他の最適化も行われます)。」
ChiefTwoPencils 2015

2
私が持っている.gradleでディレクトリgradle.propertiesのファイルを。しかし、それでもまだ時間がかかります。任意の提案
CoDe、2015年

4
違いはありません
VladoPandžić16年

変更後、Android Studioを再起動します。
Iman Marashi 2016

78

この設定を変更すると、コンパイル時間が10分から10秒に短縮されました。

ステップ1:

設定(Ctrl + Alt + S)->

ビルド、実行、展開->

コンパイラ->

--offlineコマンドラインオプションボックスに「」と入力します。

ステップ2:

「独立したモジュールを並行してコンパイルする」チェックボックスをチェックします。

&[適用]-> [OK]をクリックします

ここに画像の説明を入力してください

ステップ3:gradle.propertiesファイル内->次の行を追加

org.gradle.jvmargs=-Xmx2048M -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.daemon=true

更新:

Android Studio 2.0以上を使用している場合は、Instant Runを試してください

設定→ビルド、実行、配置→インスタント実行→インスタント実行を有効化。

インスタントランの詳細-https ://developer.android.com/studio/run/index.html#instant-run


6
私はこれを試してみたところ、ビルドが大幅にスピードアップしました。このオプションにより、オフラインでビルドできるようになったことを知っていますが、このオフラインでビルドすることに不利な点はありますか?
Simon

5
@Simon-欠点は、build.gradleファイルで識別された依存関係の最新バージョンをプルダウンできないことです。インポートされたライブラリのキャッシュされたスナップショットを使用するため、実行が速くなります。一部の開発者にとって、安定性は最優先事項ですが、オフラインになりすぎると、最終的にオンラインになり、それらの依存関係が進化して、前述のプロジェクトが取り残されてしまう可能性があります。
Mark Lapasa

1
おかげでこれは私にとってはうまく
いき

@Simon、開発を開始するときは、上記の設定を設定し、停止したら、夜の終わりにオフにして、最後にもう一度アプリを実行して、すべてが同期されるようにします。それともこれに問題がありますか?
Sauron、

1
それは33秒から5秒に減少しました:))
Miron

62

android studioのgradle.propertiesファイルに以下を追加することにより、私の古いcore2duoラップトップ(linux mintを実行)で、gradleビルドを43秒から25秒に減らすことができました

org.gradle.parallel=true
org.gradle.daemon=true

デーモン設定がビルドを速くする理由のソース:https : //www.timroes.de/2013/09/12/speed-up-gradle/


3
リンクから:「注:これはコンソールビルドにのみ影響します。AndroidStudioは常にGradleデーモンを使用します(設定によっては、他の最適化も行われます)。」
ChiefTwoPencils 2015

2
並列オプションは、ASでもビルドを改善しました。ありがとうございました:)
jonathanrz 2015年

3
並列オプションは私のビルドを改善しませんでした。
VladoPandžić16年

ありがとう。このソリューションにより、ビルド時間は7分から23秒になりました...
Vignesh Bala

thanxでビルドが2分から3秒になりました
Pouya Samie

12

手順に従うと、10倍速くなり、ビルド時間を90%短縮できます

まず、次のディレクトリにgradle.propertiesという名前のファイルを作成します。

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

次の行をファイルに追加します。

org.gradle.daemon=true
org.gradle.parallel=true

そしてAndroid Studioでこのオプションをチェックしてください

ここに画像の説明を入力してください

ここに画像の説明を入力してください


7

Gradleの新しいバージョン(ver 2.4)があります。

これをプロジェクトに設定するには、[ファイル]メニューから[プロジェクト構造]ダイアログを開きます。

Project Structure -> Project -> Gradle version

「2.4」に設定します。
パフォーマンスの向上について詳しくは、こちらのリンクをご覧ください


2
おかげで、Gradleバージョン2.4では約14秒も節約できました。
Miao1007

5
これにより、ビルド時間が長くなりました
EgemenHamutçu15年


6

これは私がやったことであり、私のgradleビルド速度は劇的に向上しました!最初のビルドの1分から20秒、および後続のビルドは40秒から5秒になりました。

gradle.propertiesのファイルにこれを追加します。

org.gradle.jvmargs=-Xmx8192M -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

ではコマンドライン引数 [ファイル]> [その他の設定]> [デフォルト設定]> [ビルド、実行、展開>コンパイラへの移動を経由してコマンドライン引数に以下の引数を追加します

これを追加:

--debug --stacktrace -a, --no-rebuild -q, --quiet --offline

画像はこちら


6

Android開発時には、RAMが8 GBしかないMac / PCを使用しないようにしてください。1つのエミュレータ(Genymotionなど)を起動するとすぐに、Android StudioでGradleビルドを使用すると、ビルド時間が非常に遅くなります。これは、1つのソースファイルに簡単な1行の変更を加えた場合でも発生します。

エミュレータを閉じて実際のデバイスを使用することは非常に役立ちますが、もちろんこれは非常に制限が多く、柔軟性が低くなります。エミュレータのRAM使用設定を減らすと効果的ですが、最善の方法は、ラップトップに少なくとも12〜16 GBのRAMがあることを確認することです。

更新(2017年6月):Android Studio Gradleビルドを高速化する方法を詳細に説明する優れたmedium.com記事がいくつかあり、8 GBマシンでも動作します。

要約されたコンセンサスは次のとおりです。

作成gradle.propertiesのファイルを(のグローバルのいずれか~/.gradle/gradle.propertiesまたはプロジェクトにローカル)、および次の行を追加します。

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

4
  1. オフライン作業を有効にする

  2. 次のコードを追加して、Gradleのパフォーマンスを向上させます gradle.properties

org.gradle.daemon = true
org.gradle.parallel = true

ステップバイステップガイド:http : //www.viralandroid.com/2015/08/how-to-make-android-studio-fast.html


これらの回答をさまざまに保ち、OPの質問の詳細に焦点を当てましょう。re:stackoverflow.com/a/34828203 ... stackoverflow.com/a/34827929 ... stackoverflow.com/a/34827858 ... stackoverflow.com/a/34827827 ... stackoverflow.com/a/34827788
ドリュー


3

Wikimedia AppsのAndroidチームのこのページによると、Gradleビルドを最適化する良い方法は、この行を〜/ .gradle / gradle.propertiesに追加することです

org.gradle.daemon=true                                                          
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M

ファイルを持っていない人のためにそれを行うには2つの方法があります:

  1. プロジェクトルートにgradle.propertiesというファイルを作成して、プロジェクトのローカルファイルを追加するか、

  2. ホームディレクトリに同じファイル(Windowsでは%UserProfile%.gradle、LinuxおよびMac OS X では〜/ .gradle)を作成することにより、すべてのプロジェクトに対してグローバルに設定できます。

    良い練習ではなく、プロジェクトレベルでよりも、自分のホームディレクトリにプロパティを設定します。


2

コマンドラインを使用してパフォーマンスを向上させることもできます。Linux <task name>からプロジェクトのルートフォルダー内からコマンド./gradlew を使用するか<task name>、特定のGradleに対して上記のコマンドのいずれかを最初に実行するときに、gradlewのようなgradlew.batファイルを使用できます。バージョン、対応するGradleディストリビューションをダウンロードし、それを使用してビルドを実行します。

ラッパー経由でGradleプロジェクトをインポートする場合、IDEはGradleの「すべて」のディストリビューションを使用するよう要求する場合があります。これは完全に問題なく、IDEがビルドファイルのコード補完を提供するのに役立ちます。これは、手動でGradleを手動でインストールする必要がないことを意味するだけでなく、ビルド用に設計されたバージョンのGradleを使用することもできます。これにより、履歴ビルドの信頼性が向上します。詳細については、ラッパーを使用したビルドの実行を参照してください


2

ビルドを高速化するには、Gradleデーモンの最大ヒープサイズを 2048 MB以上に増やします

これを行うに
org.gradle.jvmargs=-Xmx2048M
は、プロジェクトgradle.propertiesで設定します。


1

build.gradleファイルを追加します。

android {
...
dexOptions {
        javaMaxHeapSize "4g" //specify the heap size for the dex process
    }
...
}

お役に立てば幸いです。


1

Windows 10および1TBソリッドステートで第5世代i7を実行しています。Android Studio Projectsフォルダーを圧縮して、約80%ブーストしました。お役に立てれば。

次に、それを上記のソリューション、つまり(org.gradle.parallel = true、org.gradle.daemon = true)と組み合わせました。パフォーマンスの向上は非常に印象的でした。

さらに:

上記の答えはすべて完全に正しいですが、私はAndroid開発者(4年半)の経験として次のように述べる必要があります。固体の状態。私たちは皆、IDEでその再生ボタンを1日に数百回ヒットしました。スピナーからSSD(ポストGradle)に移行したとき、私の速度と効率は文字通り2〜4倍速く、ここでは誇張しないことをお約束します。

さて、私は小さなSSDと大きなスピナーを備えたマシンを持つことについて話しているのではなく、1つの大きなSSDについて話しているのです。小さなSSDと大きなスピナーを備えたマシンを既にお持ちの場合は、小さなスピナーを500GB SSDにアップグレードして、SSDをメインのOSドライブとして設定し、それに開発者ツールをインストールすることができます。

したがって、ペースの速い環境で作業している場合は、この投稿を上司に見せてください。まともな1TB SSDなら約300ポンド(VATを含む)、または500GB SSDなら約160ポンド引き戻します。あなたがジュニアまたはシニアのAndroid開発者であるかどうかに応じて、ドライブは1〜2営業日で、またはそれよりも小さい投資をすると約2〜5営業日で(賃金費用で)自己採算になります。500GB SSDと言う。

多くの開発者はこれはそうではないと主張するかもしれませんが、Gradleシステムは直接ディスクアクセスが非常に難しいため、Gradleの場合もそうです。.NET / C#/ VB Netやその他の開発ツールを使用している場合、大きな違いはありませんが、Gradleの違いは非常に大きくなります。あなたがこの投稿に基づいて行動するなら、私はあなたに約束します、あなたは失望することはありません。個人的に私は最初に1TBスピナーが付属していた8GB RAMの第5世代i7を使用していて、それをSamsung SSD 840 EVO 1TBにアップグレードしました。私はhttps://www.aria.co.ukから購入しました。

お役に立てれば。また、これは商業的に動機付けされた投稿ではないことを述べなければなりません。これまで何度も使用したことがあり、常に信頼できるAriaをお勧めします。


1

gradle.propertiesファイルに追加できるいくつかのコマンド:

org.gradle.configureondemand = true-このコマンドは、実際にビルドする必要があるプロジェクトのみをビルドするようにgradleに指示します。デーモンを使用— org.gradle.daemon = true-デーモンは、ビルドが完了した後でも、gradleのインスタンスをバックグラウンドで稼働させ続けます。これにより、gradleの初期化に必要な時間が削除され、ビルドのタイミングが大幅に短縮されます。

org.gradle.parallel = true-Gradleがプロジェクトを並行してビルドできるようにします。プロジェクトに複数のモジュールがある場合、これを有効にすることで、gradleは独立したモジュールのビルド操作を並行して実行できます。

ヒープサイズを増やす— org.gradle.jvmargs = -Xmx3072m -XX:MaxPermSize = 512m -XX:+ HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8-android studio 2.0以降、gradleはプロセスでdexを使用してビルドタイミングを減らします事業。通常、アプリケーションの構築中、複数のdxプロセスが異なるVMインスタンスで実行されます。ただし、Android Studio 2.0以降、これらすべてのdxプロセスは単一のVMで実行され、そのVMもGradleと共有されます。これにより、すべてのdexプロセスが同じVMインスタンスで実行されるため、ビルド時間が大幅に短縮されます。しかし、これには、すべてのdexプロセスとgradleに対応するために、より多くのメモリが必要です。つまり、gradleデーモンに必要なヒープサイズを増やす必要があります。デフォルトでは、デーモンのヒープサイズは約1GBです。

動的依存関係が使用されていないことを確認してください。つまり、実装「com.android.support:appcompat-v7:27.0.+」を使用しないでください。このコマンドは、gradleがオンラインになり、アプリをビルドするたびに最新バージョンを確認することを意味します。代わりに固定バージョン、つまり「com.android.support:appcompat-v7:27.0.2」を使用してください


1

これをgradle.propertiesファイルに追加します

org.gradle.daemon=true                                                          
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M

1

androidフォルダーからgradle.propertiesを開き、強調表示された行のコメントを外して、マシン構成に従ってメモリ値を指定します。私のマシンには8GBのRAMがあるので、それぞれ最大4096MBと1024MBを割り当てました。

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
//Uncomment below line for providing your system specific configuration
#org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError - Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
#http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 //Uncomment below line to allow parallel process execution.
 #org.gradle.parallel=true

この後、ビルド時間が半分になりました。幸せな建物!!


0

プロジェクトでmultidexを有効にするとよく発生します。これにより、開発プロセスが遅くなる可能性があります!! ドキュメントに よると:

ビルドシステムはプライマリDEXファイルに含める必要があるクラスとセカンダリDEXファイルに含めることができるクラスについて複雑な決定を行う必要があるため、multidex構成ではビルド処理時間が大幅に増加します。つまり、multidexを使用したインクリメンタルビルドには通常より長い時間がかかり、開発プロセスが遅くなる可能性があります。

これを最適化できます:

より長い増分ビルド時間を緩和するには、プリデクシングを使用して、ビルド間でmultidex出力を再利用する必要があります。

Android Studio 2.3以降を使用している場合、Android 5.0(APIレベル21)以降を実行しているデバイスにアプリを配備すると、IDEはこの機能を自動的に使用します。

したがって、minSdkVersionを21以上に設定する必要があります

ただし、プロダクションバージョンが21未満のminSdkVersionをサポートする必要がある場合(例:19)

productFlavorsを使用して、開発バージョンのminSdkVersion 21を設定できます。

    android {
    defaultConfig {
        ...
        multiDexEnabled true
        // The default minimum API level you want to support.
        minSdkVersion 15
    }
    productFlavors {
        // Includes settings you want to keep only while developing your app.
        dev{
            //the IDE automatically uses  pre-dexing feature to mitigate longer incremental when deploying your app to a device running Android 5.0 !
            minSdkVersion 21
        }
        prod {

        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                                                 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile 'com.android.support:multidex:1.0.3'
}

0

ビルド時間を短縮するには、コマンドラインからビルドすることをお勧めします。アプリのコードベースが大きく、複数のモジュールがある場合は、ここで説明するローカルAARアプローチを試すことができます。これにより、Android StudioのパフォーマンスとGradleビルド時間が大幅に向上します。コマンドラインビルドにも対応

https://blog.gojekengineering.com/how-we-improved-performance-and-build-times-in-android-studio-306028166b79

統合手順を含むデモプロジェクトは、 https //github.com/akhgupta/AndroidLocalMavenRepoAARDemoにあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.