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


Answers

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

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

〜30秒から〜3秒まで

Question

私は複数のプロジェクト(〜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
    }
}



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




ここでは、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

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




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

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

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

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

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

    インスタント・ランについてもっと知りたい場合は、アンドロイドの開発者サイトをご覧ください。




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

ステップ1:

設定(Ctrl + Alt + S) - >

ビルド、実行、展開 - >

コンパイラ - >

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

ステップ2:

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

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

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

不利益:

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

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




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

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







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

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







受け入れられた答えは、アンドロイドスタジオの古いバージョンのもので、そのほとんどは今でも動作しています。 アンドロイドスタジオを更新すると少し速くなりました。 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






私は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スキームに誓っていなくても働くことができます。




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

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





Links