471

ビルドに毎回約20〜30秒かかるマルチプロジェクト(〜10モジュール)があります。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
    }
}
4

28 に答える 28

149

gradle の最新の更新チェックは無視できます。

ここに画像の説明を入力

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

約 30 秒以上から約 3 秒に短縮

于 2014-05-14T07:35:30.047 に答える
35

これをどこでも検索し、最終的に私たちにとって有効な解決策を見つけました. 並列ビルドを有効にし (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/

于 2013-08-10T19:03:51.067 に答える
25

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

なぜEclipseよりも遅いのかという質問には直接答えませんが、プロセスがディスクに制限されており、SSDへのアップグレードが(やや高価な)解決策になる可能性があることを示しています. 問題をグーグルで検索してここにたどり着く人がいると思います。彼らは私の経験に感謝するかもしれません。

于 2014-03-23T22:49:49.293 に答える
21

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 という名前のファイルを変更することで有効にできます。これらのオプションの一部 (並列モジュールのコンパイルなど) は、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 プロセスがファイルを使用できるようにする前にファイルを再スキャンするため、ビルド時間が遅くなります (特に、gradle ファイルとインデックス作成タスクを含む Android Studio 同期プロジェクト)。ウイルス対策を有効にした場合と無効にした場合のビルド時間とプロセス CPU を測定して、関連性があるかどうかを確認します。これが役立つことを願っています。ビルドのパフォーマンスを向上させるための質問やその他のヒントがある場合は、コメントを残してください。

役立つリンク

于 2016-04-24T17:29:48.130 に答える
19

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

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

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

それ以外の:

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

後者は 20,000 個のメソッド(ブログを参照)をクラスパスに取り込み、合計メソッド数が 64,000 個を超える可能性があります。

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

  • multidex ビルド (サポート ライブラリあり) ~40 秒
  • プロガード ビルド ~20秒
  • メソッド制限 < 64k ~5sec の場合のビルド

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
        }
    }
    ...
}
于 2015-05-06T07:50:56.800 に答える
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. アンドロイド スタジオを起動します。[ファイル] -> [設定] -> [ビルド、実行、デプロイ] -> [コンパイラ] に移動します

    • 独立したモジュールを並行してコンパイルすることを確認します
    • コマンド ライン オプションで次のように記述します: --offline
    • プロジェクトを自動的に作成するにチェックを入れる
    • オンデマンドで設定をチェック

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

ターミナルを開き、次のコマンドを入力して、MAC OSX で vmoptions を開きます。

open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions
于 2015-07-26T04:56:45.790 に答える
8

Android Studio 2.3 以降のアップデート

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

2016 年 9 月に Android 2.2 がリリースされた後、Androidはビルド パフォーマンスを高速化するための実験的なビルド キャッシュ機能をリリースしgradleました。これは現在、Android Studio 2.3 Canary から公式になっています。(公式リリースノート)

デフォルトで有効になっている新しいビルド キャッシュ機能が導入され、同じまたは異なる 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

于 2016-09-23T06:53:30.933 に答える
7

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

ステップ1:

設定(ctrl+Alt+S) ->

ビルド、実行、デプロイ ->

コンパイラ ->

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

ステップ2:

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

& クリック 適用 -> OK

ここに画像の説明を入力

参照 - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

不利益:

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

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

于 2016-02-25T05:10:04.100 に答える
1

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

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

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

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

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

    Instant Run について詳しく知りたい場合は、android 開発者サイトにアクセスしてください。

于 2016-12-09T06:08:30.480 に答える
0

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

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

私のアプリのGradle依存関係
ではありましたが、私のライブラリの1 つでは

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

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

于 2016-02-24T15:17:37.420 に答える
0

(リソース xml への) 些細な変更でも10かかりました。@rivareが彼の回答で述べているように、コマンド ライン ビルドははるかに高速です (これを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 インストール C:\Android\MaskActivity\app\build\outputs\apk\app-debug.apk

于 2017-01-06T08:20:57.997 に答える
0

この sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386 を使用します

Android Studio が新しいプロジェクトのビルドに失敗し、スレーブ aapt プロセスの待機中にタイムアウトになりました

于 2016-11-17T13:35:22.363 に答える
0

まずはこれを試してみてください。それは私の個人的な経験です。

私も同じ問題を抱えていました。私が行ったことは、ウイルス対策を永久に無効にすることです(私のものはAvast Security 2015でした)。ウイルス対策を無効にした直後、うまくいきました。グラドルは正常に終了しました。今から数秒以内にgradleが終了します(5〜10秒しかかかりません)。

于 2015-10-24T06:45:48.460 に答える
0

android documentationに従って、これをアプリモジュールのgradleファイルに追加します。

android {
    ...
    dexOptions {
    preDexLibraries true
    maxProcessCount 8
    }
}
于 2017-07-06T02:53:45.260 に答える
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でこのオプションを確認してください

ここに画像の説明を入力

于 2016-05-14T06:52:53.677 に答える
0

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

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

于 2015-07-27T12:54:09.803 に答える