最後の更新(6月25日からのビルド)以降、AndroidスタジオGradleでの変更は非常に遅くなっています。また、ファイルを編集してキーアップ時に再コンパイルすると、変更を自動追跡するようにも見えます。
i5では、各変更に数分かかります。
Gradleの変更をスピードアップする方法はありますか?
最後の更新(6月25日からのビルド)以降、AndroidスタジオGradleでの変更は非常に遅くなっています。また、ファイルを編集してキーアップ時に再コンパイルすると、変更を自動追跡するようにも見えます。
i5では、各変更に数分かかります。
Gradleの変更をスピードアップする方法はありますか?
回答:
開発者はそれに取り組んでいます。私がこの回答に投稿したように、現時点での最速の解決策は、コマンドラインからgradleを使用することであり、開発していないすべてのモジュールをバイナリライブラリに切り替える必要があります。g + では、それについて開発者との議論があります。
間違いなく違いを生む:方法... Gradleのビルド時間を短縮する
gradle.properties
次のディレクトリにという名前のファイルを作成するだけです。
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
次の行をファイルに追加します。
org.gradle.daemon=true
この設定を変更すると、コンパイル時間が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
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/
手順に従うと、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でこのオプションをチェックしてください
Gradleの新しいバージョン(ver 2.4)があります。
これをプロジェクトに設定するには、[ファイル]メニューから[プロジェクト構造]ダイアログを開きます。
Project Structure -> Project -> Gradle version
Android Studio 2.1では、「Dex In Process」を有効にして、アプリのビルドを高速化できます。
詳しくは、https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.vijksflynをご覧ください。
これは私がやったことであり、私の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
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
オフライン作業を有効にする
次のコードを追加して、Gradleのパフォーマンスを向上させます gradle.properties
org.gradle.daemon = true
org.gradle.parallel = true
ステップバイステップガイド:http : //www.viralandroid.com/2015/08/how-to-make-android-studio-fast.html
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
Wikimedia AppsのAndroidチームのこのページによると、Gradleビルドを最適化する良い方法は、この行を〜/ .gradle / gradle.propertiesに追加することです
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M
ファイルを持っていない人のためにそれを行うには2つの方法があります:
プロジェクトルートにgradle.propertiesというファイルを作成して、プロジェクトのローカルファイルを追加するか、
ホームディレクトリに同じファイル(Windowsでは%UserProfile%.gradle、LinuxおよびMac OS X では〜/ .gradle)を作成することにより、すべてのプロジェクトに対してグローバルに設定できます。)
良い練習ではなく、プロジェクトレベルでよりも、自分のホームディレクトリにプロパティを設定します。
コマンドラインを使用してパフォーマンスを向上させることもできます。Linux <task name>
からプロジェクトのルートフォルダー内からコマンド./gradlew を使用するか<task name>
、特定のGradleに対して上記のコマンドのいずれかを最初に実行するときに、gradlewのようなgradlew.batファイルを使用できます。バージョン、対応するGradleディストリビューションをダウンロードし、それを使用してビルドを実行します。
ラッパー経由でGradleプロジェクトをインポートする場合、IDEはGradleの「すべて」のディストリビューションを使用するよう要求する場合があります。これは完全に問題なく、IDEがビルドファイルのコード補完を提供するのに役立ちます。これは、手動でGradleを手動でインストールする必要がないことを意味するだけでなく、ビルド用に設計されたバージョンのGradleを使用することもできます。これにより、履歴ビルドの信頼性が向上します。詳細については、ラッパーを使用したビルドの実行を参照してください
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をお勧めします。
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」を使用してください
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
この後、ビルド時間が半分になりました。幸せな建物!!
プロジェクトで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'
}
ビルド時間を短縮するには、コマンドラインからビルドすることをお勧めします。アプリのコードベースが大きく、複数のモジュールがある場合は、ここで説明するローカルAARアプローチを試すことができます。これにより、Android StudioのパフォーマンスとGradleビルド時間が大幅に向上します。コマンドラインビルドにも対応
統合手順を含むデモプロジェクトは、 https ://github.com/akhgupta/AndroidLocalMavenRepoAARDemoにあります。