GradleとAndroid Studioを介したアプリのビルドと実行は、Eclipseを介するよりも遅い


461

マルチプロジェクト(〜10モジュール)があり、そのビルドには毎回約20〜30秒かかります。Android Studioで[実行]を押すと、毎回アプリを再構築するまで待たなければならず、非常に時間がかかります。

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
    }
}

23
現時点では、GradleベースのビルドシステムもAndroid Studioも製品グレードではないことに注意してください。
CommonsWare 2013年

11
ここで費やされている時間は、おそらくDEXingフェーズです。残念ながら、android studioのmakeは毎回クリーンを実行するようで、以前に修正されたファイルが削除されます。うまくいけば、インクリメンタルビルドの修正がすぐに表示されます。
リチャードJ.ロスIII

3
それまでの間、デフォルトのGradleタスクを変更して、常にクリーンアップを実行しないように伝える簡単な方法はありますか?
sigmabeta 2013年

10
@CommonsWareよく、バージョン1.02を使用しているという言い訳はありませんが、それでも大きな問題です。Androidスタジオで4GBのクアッドコアラップトップを実行すると、約3.75GBのRAMが使用され、Hello Worldプロジェクトの単一インスタンスが保持されます。また、結果として非常に低迷しています。私にとってそれは深刻で進行中の設計上の欠陥を示しています。すぐに問題が解決することを願っています。
Andrew S

7
@AndrewS以前のツールと比較してGradleを適切な速度で実行するためにOSを変更する必要があるのは残念です。
Richard Le Mesurier、2015

回答:


441

ハードウェア

申し訳ありませんが、開発ステーションをSSDと大量のRAMにアップグレードすると、以下の点を合計した場合よりも大きな影響が出ると考えられます。

ツールのバージョン

ビルドパフォーマンスの向上は開発チームにとって最優先事項なので、最新のGradleおよびAndroid Gradleプラグインを使用していることを確認してください。

設定ファイル

gradle.properties該当するディレクトリでという名前のファイルを作成します。

  • /home/<username>/.gradle/ (Linux)
  • /Users/<username>/.gradle/ (マック)
  • C:\Users\<username>\.gradle (ウィンドウズ)

追加:

# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -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
org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

# Set to true or false to enable or disable the build cache. 
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true

Gradleプロパティは、に配置するprojectRoot\gradle.propertiesとローカルで機能し、に配置するとグローバルに機能しuser_home\.gradle\gradle.propertiesます。Gradleタスクをコンソールから実行するか、アイデアから直接実行する場合に適用されるプロパティ:

IDE設定

IDE設定GUIからGradle-IntelliJ統合を微調整することが可能です。「オフライン作業」を有効にすると(以下のyavaからの回答を確認)、すべての「同期Gradleファイル」で実際のネットワーク要求が無効になります。

IDE設定

ネイティブマルチデックス

apkビルドの最も遅いステップの1つは、Javaバイトコードを単一のdexファイルに変換することです。ネイティブmultidex(デバッグビルドのみのminSdk 21)を有効にすると、ツールが作業量を削減するのに役立ちます(以下のAksel Willgertからの回答を確認してください)。

依存関係

@aarライブラリサブプロジェクトよりも依存関係を優先します。

上AARパッケージを検索mavenCentraljCenterまたは使用jitpack.io githubのから任意のライブラリを構築します。依存関係ライブラリのソースを編集していない場合は、プロジェクトソースで毎回ビルドしないでください。

アンチウイルス

ウイルス対策スキャンからプロジェクトとキャッシュファイルを除外することを検討してください。これは明らかにセキュリティとのトレードオフです(これを自宅で試さないでください!)。ただし、ブランチ間を頻繁に切り替えると、ウイルス対策は、gradleプロセスがそれを使用する前にファイルを再スキャンするため、ビルド時間が遅くなります(特に、gradleファイルとインデックス作成タスクを含むAndroidStudio同期プロジェクト)。ビルド時間を測定し、ウイルス対策を有効または無効にしてCPUを処理して、関連があるかどうかを確認します。

ビルドのプロファイリング

Gradleには、プロファイリングプロジェクトの組み込みサポートがあります。異なるプロジェクトは、プラグインとカスタムスクリプトの異なる組み合わせを使用しています。を使用--profileすると、ボトルネックを見つけるのに役立ちます。


1
@aar依存関係について:たとえばdependencies {compile 'com.android.support:support-v4:21.0.+'}、使用は遅いソリューションですか?よくわかりません
younes0

1
イメージング、次のようなライブラリを追加しました:github.com/novak/numberpicker。これは価値があり、問題のコードソリューションを提供しますが、作成者はmavenやjCenterのようにそれを公開していません。これで、そのライブラリをソースとしてプロジェクトに取り込み、メインプロジェクトがビルドされるたびにビルドするか、一度コンパイルして@aarのみをプロジェクトリポジトリにコミットします。したがって、これは実際にはソース/バイナリ依存関係の選択です。ソースを編集していない場合は、依存関係をプリコンパイルされたバイナリとして取得する必要があります。.jarであるプレーンJavaライブラリの場合、.aarであるAndroidライブラリの場合
Sergii Pechenizkyi

1
それはプロジェクト設定> gradleです。下のスクリーンショットを参照してください:i.stack.imgur.com/wrwgo.png
Sergii Pechenizkyi '28 / 12/14

2
説明したようにすべての最適化を設定しましたが、Android Studioではアプリの起動に3〜4分かかりましたが、Eclipseでは約30秒でした。くだらない。わずか12プロジェクト、1つのアプリで実行!Androidの開発は非常に煩雑になり、1年以上経ちました。
3c71

1
私はすべての最適化を適用しましたが、Eclipseでの2〜3秒と比較して、HelloWorld apkの構築には約20秒かかります。
Pawel

148

Gradleの最新更新チェックを無視できます。

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

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

〜30秒以上から3秒以下に減少


24
それはいいね。それはとても速いです。しかし、これは何を壊すのでしょうか?
John Ballinger、2014年

2
最良のソリューション。このソリューションの副作用を知ることができますか
Kavin Varnan '19年

26
@JohnBallingerオフライン作業-このチェックボックスを使用して、オフラインモードでGradleを操作します。この場合、Gradleはキャッシュからの依存関係を使用します。Gradleは依存関係の解決を実行するためにネットワークにアクセスしようとしません。必要な依存関係が依存関係のキャッシュに存在しない場合、ビルドの実行は失敗します。(出典:jetbrains.com/idea/help/gradle-2.html
cprcrack

10
デフォルトでは、ネットワークを経由する前に、最初にキャッシュされた依存関係を使用しますか?これgradleが実行されるたびに更新された依存関係をチェックすることは想像できません。それは奇妙です。
Ehtesh Choudhury

1
@EhteshChoudhuryそれは非常に奇妙です。Gradle / Android Studioの開発環境全体は非常に遅いです。ほとんどの人はJavaのせいで遅いと思っています。私はIDEAでサーバー側のJava開発を行っており、物事は非常にスムーズに実行されます。
ステパニアン2016

34

これをどこでも検索し、最終的に私たちに役立つ解決策を見つけました。並列ビルド(OSXの場合preferences -> compiler -> gradle -> "Compile independent modules in parallel")を有効にし、「プロジェクトを自動的に作成」を有効にすると、1分から20秒に短縮されました。/ u / Covalenceに感謝します。

http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/


56
20秒はまだひどく遅いです。
Johannes Brodwall 2014年

6
これは明らかに、複数の独立したモジュール/プロジェクトがある場合にのみ役立つことに留意してください。私は単一のモジュールアプリでテストしましたが、何の違いもありませんでした。
サム

私にはかなり大きなプロジェクトがあり、MacBook Pro 2012 Core i7、8 GB RAMで2〜3分かかります。大丈夫ですか?
セルミリオン2017年

25

最近、新しいSSDを購入し、WindowsからLinuxに移行しました。ビルド時間が1桁速くなり、煩わしくなりません。

Eclipseよりも遅い理由についての直接の回答はありませんが、プロセスがディスクに制限されており、SSDへのアップグレードが(やや高価な)ソリューションである可能性があることを示しています。私の経験に感謝するかもしれない問題をグーグルで調べて、ここで終わる人々がいると思います。


11
私のチームの開発者は、大量のメモリを搭載した高速マシンに高速SSDを搭載しています。重要なアプリの場合、マイナーなコード変更後の再デプロイは、Eclipseでほぼ瞬時に再デプロイする場合と比較して、約45秒かかります。Android以外のプレーンなJUnitを実行するのは非常に遅くなります。Android StudioとGradleへの「アップグレード」は、これまで大きなダウングレードでした。:-/
spaaarky21 2015

@Lionleaf WindowsからLinuxへの切り替え速度はどのくらいですか?
younes0

@ younes0わからない。SSDに切り替えると同時にLinuxに切り替えました。それがプラスの効果をもたらすと言っているのではなく、スピードアップのために変更したのはこれら2つの変数だけでした。
AndreasLøveSelvik 2015

4
私の場合、WindowsからLinuxに切り替えた結果、Androidのビルドが40%高速になりました...そのため、それだけの価値はあります
kosiara-Bartosz Kosarzycki

@Bartosz Kosarzyckiが言ったことの2番目です。私は自分の開発マシンでvirtualboxを使ってUbuntu vmを実行することになりました。Windowsで最大54秒のビルド、同じハードウェア上の仮想マシン内の同じビルドで最大7秒。Linuxに移行することによる非常に高速化。
エリックコーネルソン2017

20

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に移動し、[オフライン]ワークボックスをクリックします。

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

  1. 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#secgradle_configuration_propertiesのすべてのパラメーターのリストを参照してください。

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

役立つリンク


19

Google Play開発者サービスを使用している場合は、BLOB全体ではなく必要なライブラリのみに依存することで、処理を高速化できます。

マップのみが必要な場合は、次を使用します。

compile 'com.google.android.gms:play-services-maps:6.5.+'

の代わりに:

compile 'com.google.android.gms:play-services:6.5.+'

後者は、クラスパスに20kメソッド(ブログを参照)をもたらします。これにより、メソッドの総数が64kを超える可能性があります。

これは、デバッグビルドの場合でも、proguardまたはmultidexの使用を強制します。私のプロジェクトの1つで、次のビルド時間がありました

  • multidexビルド(サポートライブラリを使用)〜40秒
  • プロガードビルド〜20秒
  • メソッド制限<64k〜5秒のときにビルド

SDK 21以降で開発する場合、Androidのドキュメントに記載れているよう multidexビルドを最適化することが可能です。

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
    ...
}

2
すべてのplay-serviceライブラリをコンパイルする代わりに、私はコンパイルmapsしてlocations を無効にしましたmultidex。大きな違いを感じます。ありがとう+1
Sami Eltamawy

16

受け入れられた答えは、Android Studioの古いバージョンに対するものであり、それらのほとんどは現在でも動作します。Android Studioを更新すると、少し速くなりました。XmsとXmxの増加に伴って自動的に増加するため、わざわざヒープサイズを指定しないでください。VMoptionsを使用したいくつかの変更は次のとおりです

  1. binフォルダーには、環境構成を設定するためのstudio.vmoptionsファイルがあります。私の場合、これはstudio64.vmoptionsです。次の行がまだ追加されていない場合は追加して、ファイルを保存します。私の場合、私は8GBのRAMを持っています。

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
  2. Android Studioを起動します。[ファイル]-> [設定]-> [ビルド、実行、配置]-> [コンパイラ]に移動します。

    • 独立したモジュールのコンパイルの並列チェック
    • コマンドラインオプションで次のように記述します。--offline
    • [プロジェクトを自動的に作成]をチェックします
    • オンデマンドで構成を確認する

Macを使用している場合、最初はvmoptionsが見つかりませんでした。とにかく、ここではMAC OSXでvmoptionsを変更する方法についての素晴らしい記事です。この記事の引用はこちら。

端末を開き、次のコマンドを入力してMAC OSXでvmoptionsを開きます。

open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions

1
AS 2.3.2以降では、ヘルプ
Sam

15

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

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

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

org.gradle.daemon=true

私にとって、速度はEclipseと同等になりました。

出典:https : //www.timroes.de/2013/09/12/speed-up-gradle/


Macで.gradleフォルダーを表示できません。どうやって開くの?
Dharmik、2014年

@Dharmik:Android Studioを別のユーザー名でインストールした可能性があります。そうでなければ、正しくインストールされていないと思います。
Yster 2014年

1
いいえ、それは別の問題でした。「。gradle」システムフォルダーが非表示になりました。そのため、Go => Go To Folderに移動し、.gradleフォルダーを見つけました..迅速な返信に感謝します..
Dharmik

14

コマンドラインからgradleを使用すると、プロセスを高速化できます。IDE開発者のために行うべき多くの最適化があります。しかし、それは単なる初期のバージョンです。

詳細については、一部の開発者とのg + に関するこのディスカッションをご覧ください。


3
これは2016年の今でも当てはまるようです
レオは

11

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

  • [設定]の[バージョン管理]に移動し、[Subversion]を[なし]に設定します。ここに画像の説明を入力してください

1
あなたは私の日を節約します:2/4分-> 15秒(プロジェクトでTortoise HGを無効にしました)。
カフタナティ2016

3
誰かがまだSubversionを使用している場合は、GitまたはMercurialに切り替える必要があります
Leoは

8

Android Studio 2.3以降の更新

すべての答えは素晴らしいので、ビルドの速度を向上させるために、これらの方法をこの方法で使用することをお勧めします。

2016年9月にandroid 2.2をリリースした後、Android はビルドパフォーマンスを高速化するための実験的なビルドキャッシュ機能をリリースしましたgradle(公式リリースノート)

デフォルトで有効になっている新しいビルドキャッシュ機能が導入され、同じまたは異なるAndroidの以前のビルドで作成されたファイル/ディレクトリを保存して再利用することで、ビルド時間(フルビルド、インクリメンタルビルド、インスタントランを含む)を高速化できます。事業。

使い方:

gradle.propertiesファイルに次の行を追加します

android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.

キャッシュを消去します。

  • cleanBuildCacheビルドキャッシュをより簡単にクリーンアップするために呼び出される新しいGradleタスクがあります。端末で次のように入力して使用できます。

    ./gradlew cleanBuildCache

  • または、場所にあるすべてのファイルストアを削除して、Android Studio 2.2のキャッシュを消去できます。

    C:\Users\<username>\.android\build-cache


7

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

ステップ1:

設定(Ctrl + Alt + S)->

ビルド、実行、展開->

コンパイラ->

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

ステップ2:

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

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

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

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

不利益:

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

重要な注意:アプリケーションをデプロイするときは、この設定を削除して、最新バージョンの依存関係でビルドしてください。


6

で私を解決しました

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Offline work

Gradleビルドは8分から3秒になりました。


4

これが、Android Studio 2.2の高速化において、この最初のAndroidプログラマー(かつてのプロのプログラマー)を助けたものです。私はこれがリハッシュであることを知っていますが、ただ1つの場所に要約します。

初期ビルドは依然として非常に遅くなる可能性がありますが、実行中のアプリの再起動は通常、非常に許容できるようになりました。私は次善のPCを使用しています:AMDクアッドコアA8-7410 CPU、8MB RAM、SSD以外のHD、Win 10(そして、これは私の最初のスタックオーバーフローの投稿です...;)

設定->グラドル:

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

設定->コンパイラ:

「独立したモジュールを並行してコンパイルする」の場合ははい(これが実際にマルチコアCPUの利用に役立つかどうかは不明)。

グラドルスクリプト、「build.gradle(モジュール:アプリ)」:

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

さらに、エミュレーターではなく物理デバイスでのテストは、私にとってはうまく機能しています。立ち上がる小さなタブレットが便利です。


4

もう1つのパフォーマンス向上のヒント:

Android Studio 3.0には、D8と呼ばれる新しいDEXコンパイラが含まれています。

「dexコンパイラは、ほとんどの場合、日常のアプリ開発の内部で機能しますが、アプリのビルド時間、.dexファイルサイズ、およびランタイムパフォーマンスに直接影響します。」

「そして、新しいD8コンパイラーを現在のDXコンパイラーと比較すると、D8はより速くコンパイルされ、より小さな.dexファイルを出力しますが、同じまたはより優れたアプリランタイムパフォーマンスを発揮します。」

D8はオプションです-プロジェクトのgradle.propertiesに配置する必要があるので、それを使用してください

android.enableD8=true

詳細: https //android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

PS。ビルド時間が約30%短縮されます。


1

この設定は私にとって非常に高速です(約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 Intel(R)Pentium(R)CPU G2030 @ 3.00GHz、3000 Mhz、2プロセッサレスプリンシパル、2プロセッサレスlógicos
  • x64
  • Microsoft Windows 7 Professional
  • (RAM)16,0 GB

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


1

以下の手順に従ってください。

  1. オフラインモードを有効にする:以下の印刷画面を確認してください。

    https://i.stack.imgur.com/RF9uG.png

  2. 即時実行を有効にする:以下の印刷画面を確認してください。

    https://i.stack.imgur.com/mvHKJ.png

    インスタントランの詳細については、Androidデベロッパーサイトをご覧ください。


1

Studioの右側にあるGradleメニューを開いて、変更したモジュールのみをアセンブルしてから、installコマンドを実行してみてください。実行すると、アセンブルしているコードに加えた変更に関係なく、すべてがアセンブルされます。


0

私はGradleのエキスパートにはほど遠いですが、私の環境の.gradle / init.gradleには次の行がありました

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenRepo name: 'libs-repo', url: 'http://guest-vm/artifactory/repo'
        }
    }
}

それでも、なぜそのラインがあったのかはわかりませんが、

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenCentral()
        }
    }
} 

そして今、Android StudioとGradleのbuildindスキームに不満を言うことなく、ようやく作業できます。


あなたの場合のアーティファクトは、おそらくライブラリキャッシュとして使用されました。ライブラリがあるかどうかを調べるアーティファクトサーバーに連絡します。はいの場合はそれをユーザーに返し、そうでない場合はmavencentralからフェッチしてから返します。
Fabio Marcolini、2015年

0

私たちの特定のケースでは、問題はレトロラムダを持っていることが原因でした、コアモジュールでコードが変更されていなくても、アプリケーションを起動しようとするすべてのプロジェクトとサブプロジェクトを強制的に再コンパイルするプラグインでした。

Retrolambaを削除することで修正されました。それが誰かを助けることを願っています。


0

最初にこれを試してください。それは私の個人的な経験です。

私も同じ問題を抱えていました。私が行ったことは、ウイルス対策を永久に無効にすることです(私のものはアバストセキュリティ2015でした)。アンチウイルスを無効にした直後、うまくいきました。グラドルは正常に終了しました。今から数秒でグラドルが終了します(5〜10秒しかかかりません)。


0

こんにちは私はこれが非常に遅い答えであることを知っていますが
、私が使用していた私の場合誰かを 助けるかもしれません

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

私のアプリではGradle依存関係です
が、私のライブラリの1 つでは

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

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


0

手順に従うと、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でこのオプションを確認してください

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



0

些細(resoruceのXMLへの)変更はまだ取っ10分。以下のよう@rivareが彼の答えで述べている、コマンドラインビルドは、(このダウンを取ったmutch高速で15 )。
ここでは、Windowsのコマンドラインから少なくとも簡単なビルドを高速にするためのいくつかの手順を示します。

  1. プロジェクトのルート(gradlew.batがある場所)に移動します。

    cd c:\ android \ MaskActivity

  2. ビルドを実行します。

    gradlew AssembleDebug

  3. アンインストール(アンインストールにドラッグし、それを)直接電話からAPKを。

  4. ビルドが終了したら、殺す Windowsのタスクマネージャを使用してBIGのJavaプロセスを。

または、WindowsマシンにUNIXツールがある場合:

ps

「pid」が表示されます。

kill -9 <pid>
  1. 今あなたのapkをインストールしてください:

    adb -d install C:\ Android \ MaskActivity \ app \ build \ outputs \ apk \ app-debug.apk



0

低環境設定のマシンでAndroid環境を実行します。

  1. ブラウザで不要なWebタブを閉じます
  2. アンチウイルスユーザーの場合、自動生成されるビルドフォルダーを除外します
  3. Androidスタジオには1.2 Gbのデフォルトヒープがあり、512 MBに減少する可能性がありますヘルプ>カスタムVMオプションの編集studio.vmoptions -Xmx512mレイアウトのパフォーマンスが向上

  4. Android Studio Mkaeのコアコンポーネントの1つであるGradleの場合、現在のように3.0betaが最新のものです

以下のヒントはコードの品質に影響を与える可能性があるため、注意して使用してください。

  1. Studioに電源を入れると、電源セーフモードがオンになり、lintやコード補完などのバックグラウンド操作が終了します。

  2. 必要に応じて手動でlintcheckを実行できます。/gradlewlint

  3. ほとんどがAndroidエミュレーターを使用しており、平均して2 GBのRAMを消費するため、可能であれば実際のAndroidデバイスを使用すると、コンピューターのリソース負荷が軽減されます。または、エミュレータのRAMを減らすと、コンピュータの仮想メモリの消費量が自動的に減少します。これは、仮想デバイスの構成と事前設定で確認できます。

  4. Gradleオフラインモードは、帯域幅が制限されたユーザーがビルドの依存関係のダウンロードを無効にする機能です。Android Studioのパフォーマンス向上に役立つバックグラウンド操作を削減します。

  5. Android Studioは、複数のモジュールを並行してコンパイルするための最適化を提供します。低RAMマシンでは、この機能はパフォーマンスに悪影響を及ぼす可能性があります。コンパイラ設定ダイアログで無効にできます。

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