android-studio waiting for - GradleとAndroid Studioを使用してアプリをビルドして実行するとEclipseより遅くなる





13 Answers

あなたは日付への更新のチェックを無視することができます。

Android Studio 1.5を実行しているWindowsの場合: File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

〜30秒から〜3秒まで

build to finish

私は複数のプロジェクト(〜10モジュール)があり、そのうちの1つは毎回約20〜30秒かかります。 Android StudioでRunを押すと、アプリを再構築するたびに待つ必要がありますが、非常に遅いです。

Android Studioでビルディングプロセスを自動化することは可能ですか? あるいは、このプロセスをより速くするためのアドバイスはありますか?

Eclipseでは、自動ビルドのおかげで、エミュレータで同じプロジェクトを実行するのに約3〜5秒かかります。

これは私のbuild.gradleファイル(アプリケーションモジュール)です:

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':libraries:SharedLibs')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:FacebookSDK')
    compile project(':libraries:GooglePlayServices')
    compile project(':libraries:HorizontalGridView')
    compile project(':libraries:ImageViewTouch')
    compile project(':libraries:SlidingMenu')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}



私は最近、新しいSSDを購入し、WindowsからLinuxに移行しました。私のビルド時間は現在、一桁の速さで、もはや迷惑なものではありません。

なぜそれが日食よりも遅いのかというあなたの質問に直接答えはしませんが、それはプロセスがディスク境界であり、SSDへのアップグレードが(やや高価な)解決策かもしれないことを示しています。 私は、問題を見つけてここで終わり、私の経験に感謝する人がいるだろうと推測しています。




Android Studio 3.2.1でGradle Buildをスピードアップ

Android Studioで数分間ビルドが完了するのを待っているような気がしますか? 私も。 そしてそれはかなり迷惑なものです。 幸いにも、これを改善するために使用できるいくつかの方法があります。 AndroidはGradleを使用してビルドします。 最新バージョンの4.6は、以前のバージョンよりも大幅にパフォーマンスが向上しています(詳細はリリースノートを参照)。

ステップ1: Gradleのバージョンを更新するこれを達成するためのより簡単な方法は次のとおりです:モジュール設定を開く(あなたのプロジェクト)>プロジェクトの構造

更新

Gradleバージョンに変更:4.6Androidプラグインバージョンに変更:3.2.1

ダウンロードGradle配布配布https://services.gradle.org/distributions/gradle-4.6-all.zipそしてそれをGradleフォルダにコピーしてください:

最後のステップは、あなたのディストリビューションをSettings> Gradleに追加することです

[適用]をクリックして変更を保存することを忘れないでください。

ステップ2:プロジェクトのオフラインモード、Gradleデーモンおよび並列ビルドを有効にするオフラインモードは、Gradleに日付更新の確認を無視するよう指示します。 Gradleは毎回依存関係を要求し、このオプションを使用すると、依存関係のためにすでにマシン上にあるものだけが使用されます。 アンドロイドスタジオの設定からGradleに行き、オフラインワークボックスをクリックしてください。

  1. アンドロイドスタジオ設定からコンパイラに移動し、コマンドラインボックスに " - offline"を追加し、独立モジュールを並列にコンパイルするをクリックします。

次のステップは、プロジェクトの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デーモンはデフォルトでは有効になっていませんが、開発者のマシンで常に有効にすることをお勧めします(ただし、継続的な統合サーバーでは無効にしておきます)。 このモードに関するFAQはhttps://docs.gradle.org/current/userguide/gradle_daemon.html 。 並列ビルドの設定は、一部のプロジェクトでは安全ではない可能性があります。 要件は、すべてのモジュールをデカップリングする必要があるか、ビルドに失敗することです(詳細については、 http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects ://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projectsをhttp://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projectsしてください)。

ステップ3:インクリメンタルなデキキシングと調整のメモリ設定を有効にするインクリメンタルデクシングをオンにすることで、ビルドのスピードアップを図ることができます。 あなたのモジュールのビルドファイルで:

あなたのアンドロイドブロックにこのオプションを追加してください:

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 : https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties : https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_propertiesすべてのパラメータリストを参照してください。

手順4:ウイルス対策を無効にするウイルス対策スキャンからプロジェクトとキャッシュファイルを除外することを検討します。 これは明らかにセキュリティとのトレードオフです。 しかし、ブランチ間を頻繁に切り替えると、ウイルス対策ソフトウェアがファイルを再スキャンしてからgradleプロセスで使用できるようになります。これにより、構築時間が遅くなります(特に、Android Studioの同期プロジェクトでは、 ビルド時間を測定し、ウイルス対策の有無にかかわらずCPUを処理して、関連するかどうかを確認します。 私はこれが役立つことを願っています ビルドのパフォーマンスを改善するための質問やその他のヒントがある場合は、コメントを残してください。

役に立つリンク







Subversionを介して同期されているプロジェクトを誰かが作業しているとしたら、これがAndroid Studioのワークフローのプロセスを遅くする可能性があると私は考えています。 たとえば、私のアプリがまだ自分のデバイス上で実行されている間、クラス、XMLなどでスクロールしながら非常に遅い場合。

  • PreferencesでVersion Controlに行き、SubversionからNoneに設定します。



変更後、この設定はコンパイルの継続時間が10分から10秒に変更されました。

ステップ1:

設定(Ctrl + Alt + S) - >

ビルド、実行、展開 - >

コンパイラ - >

[オプション]ボックスに " --offline "と入力します。

ステップ2:

[独立モジュールを並列にコンパイルする]チェックボックスをオンにします。

適用 - > OKをクリックします。

リファレンス - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

不利益:

build.gradleファイルで特定された依存関係の最新バージョンをプルダウンすることはできません。 インポートされたライブラリのキャッシュされたスナップショットを使用するため、実行速度が向上します。

重要な注意 :アプリケーションを配備する際には、この設定を削除し、依存関係の最新バージョンでビルドします。




ここでは、Androidスタジオ2.2のスピードアップにこの初めのAndroidプログラマ(元プロプログラマー、数年前)を助けたものがあります。 私はこれが再ハッシュだと知っていますが、ちょうど1か所で要約しています。

初期のビルドは依然として残酷に遅くなる可能性がありますが、実行中のアプリケーションの再起動は通常非常に許容できます。 AMD Quad-Core A8-7410 CPU、8MB RAM、非SSD HD、勝利10(これは私の最初のスタックオーバーフローの投稿です....)

IN SETTINGS - > GRADLE:

「オフライン作業」の場合は「はい」(これはおそらく最もインポート設定です)。

IN SETTINGS - > COMPILER:

「独立したモジュールを並行してコンパイル」(実際にマルチコアCPUを利用するのに役立つかどうかはわかりません)ではyesです。

GRADLE SCRIPTSでは、 "build.gradle(Module:app)":

defaultConfig {
    ...
   // keep min high so that restarted apps can be hotswapped...obviously, this is hugely faster.
   minSdkVersion 14
   ...
    // enabling multidex support...does make big difference for me.
    multiDexEnabled true

また卒業論文では 、 "gradle.properties(プロジェクトのプロパティ)":

org.gradle.jvmargs = -Xmx3048m -XX:MaxPermSize = 512m -XX:+ HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

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

さらに 、エミュレータの代わりに物理デバイスでテストすることは、私のためにうまくいきます。 立っている小さなタブレットが便利です。




このセットアップは私のために本当に速くなります(ビルドの約2秒)

build.gradle

android {

    dexOptions {
        incremental true
        preDexLibraries = false
        jumboMode = false
        maxProcessCount 4
        javaMaxHeapSize "6g"
    }
}

gradle.properties

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M

私のPC:

  • CPUインテル(R)Pentium(R)CPU G2030 @ 3.00GHz、3000MHz、2プロセッサプロセッサード、2プロセッサプロダクト
  • x64
  • Microsoft Windows 7 Professional
  • (RAM)16,0 GB

プロジェクトファイル
- すべてローカルのHDにあります




スタジオの右側にあるgradleメニューを開き、変更したモジュールだけをアセンブルしてから、installコマンドを実行することができます。 runを押すと、アセンブルしているコードに加えた変更に関係なく、すべてがアセンブルされます




特定のケースでは、 retrolambdaプラグインを使用しているため、コアモジュールでコードが変更されていなくても、アプリケーションを起動しようとするたびにすべてのプロジェクトとサブプロジェクトを再コンパイルする必要がありました。

retrolambaを削除すると、私たちのために修正されました。 誰かを助けることを願っています。




こんにちは私はこれは非常に非常に遅い答えは知っているかもしれない
私の場合は私が使っていた

compile 'com.android.support:support-v4:23.1.1'

私のアプリのGradleの依存関係
私の図書館の1つでは、

 compile 'com.android.support:support-v4:23.0.1'

最新のバージョンに変更した後、私の問題は解決しました。







アンドロイドのドキュメントによると、これをappモジュールのgradleファイルに追加します。

android {
    ...
    dexOptions {
    preDexLibraries true
    maxProcessCount 8
    }
}



Related