GradleとAndroid Studio経由でアプリをビルドして実行すると、Eclipse経由よりも遅くなります。質問する

GradleとAndroid Studio経由でアプリをビルドして実行すると、Eclipse経由よりも遅くなります。質問する

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

ベストアンサー1

ハードウェア

申し訳ありませんが、開発ステーションを SSD と大量の RAM にアップグレードすると、以下のポイントを合わせたよりも大きな影響が出る可能性があります。

ツールのバージョン

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

設定ファイル

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

  • /home/<username>/.gradle/(リナックス)
  • /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します。コンソールから、または idea から直接 Gradle タスクを実行する場合、適用されるプロパティ:

IDE設定

IDE設定GUIからGradle-IntelliJ統合を微調整することができます。「オフライン作業」を有効にする(回答を確認してください)ヤヴァ下記のように設定すると、すべての「sync gradle ファイル」で実際のネットワーク リクエストが無効になります。

IDE設定

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

apkビルドで最も時間がかかるステップの1つは、Javaバイトコードを単一のdexファイルに変換することです。ネイティブマルチdex(デバッグビルドのみminSdk 21)を有効にすると、ツールの作業量を減らすことができます(回答を確認してください)。アクセル・ウィルガート下に)。

依存関係

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

aarパッケージを検索メイヴンセントラルjCenterまたは使用ジットパックgithub から任意のライブラリをビルドします。依存ライブラリのソースを編集していない場合は、プロジェクト ソースで毎回ビルドする必要はありません。

ウイルス対策

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

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

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

おすすめ記事