[解決済み] GradleとAndroid Studioを使ったアプリのビルドと実行は、Eclipseを使った場合よりも遅い
質問
複数のプロジェクト(~10モジュール)を持っていますが、ビルドに毎回20~30秒程度かかります。Android StudioでRunを押すと、アプリを再構築するために毎回待たなければならず、非常に時間がかかります。
Android Studioでビルド処理を自動化することは可能でしょうか?または、この処理を高速化するためのアドバイスがあれば教えてください。
Eclipseでは、自動ビルドのおかげで、同じプロジェクトをエミュレータ上で実行しても3~5秒程度で済みます。
これが私のbuild.gradleファイル(appモジュール)です。
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にアップグレードし、大量のメモリを搭載することは、おそらく以下のポイントを合わせたよりも大きな影響を与えるでしょう。
ツールバージョン
ビルドのパフォーマンスを上げることは、開発チームにとって重要な課題です。 グラドル と Android Gradle プラグイン .
設定ファイル
という名前のファイルを作成します。
gradle.properties
を任意のディレクトリに配置します。
-
/home/<username>/.gradle/
(リナックス) -
/Users/<username>/.gradle/
(Mac) -
C:\Users\<username>\.gradle
(Windows)
追加します。
# 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の統合を微調整することが可能です。オフライン作業(quot;offline work")を有効にする(quot;の答えを確認する) ヤヴァ を使用すると、すべてのquot;sync gradle file"で実際のネットワーク要求を無効にすることができます。
ネイティブマルチデックス
アプリのビルドで最も時間がかかるステップの1つは、Javaバイトコードを1つのdexファイルに変換することです。ネイティブのマルチデックス(デバッグビルドのみのminSdk 21)を有効にすると、ツールの作業量を減らすのに役立ちます(以下の回答を確認してください)。 アクセル・ウィルゲルト 以下同じ)。
依存関係
参考
@aar
ライブラリのサブプロジェクトよりも依存性が高い。
aar パッケージを検索 メイヴンセントラル , jCenter または jitpack.io でgithubから任意のライブラリをビルドすることができます。依存ライブラリのソースを編集していない場合は、プロジェクトのソースで毎回ビルドするべきではありません。
アンチウイルス
プロジェクトファイルやキャッシュファイルをアンチウイルススキャンの対象から外すことを検討してください。これは明らかにセキュリティとトレードオフの関係にあります(自宅でこれを試さないでください!)。しかし、ブランチ間を頻繁に切り替える場合、アンチウィルスはgradleプロセスに使用を許可する前にファイルを再スキャンし、ビルド時間を遅くします(特にAndroidStudio sync project with gradle files and indexing tasks)。アンチウイルスが有効な場合と無効な場合でビルド時間とプロセスのCPUを測定し、関連性を確認します。
ビルドのプロファイリング
Gradle には、以下のサポートが組み込まれています。
プロファイリング・プロジェクト
. プロジェクトによって、プラグインとカスタムスクリプトの組み合わせは異なります。使用方法
--profile
は、ボトルネックを見つけるのに役立ちます。
関連
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
Android TextViewにandroid:ellipsize=endのバグがある。
-
Android ProgressBarの色を変更する
-
Androidカスタムドロップダウンリストボックスコントロール
-
アンドロイドスタジオ学習入門
-
アンドロイドにおけるトークンの利用
-
[解決済み] Android StudioのGradleとは?
-
[解決済み] gradleのキャッシュをクリアする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
最新のandroidプロジェクトディレクトリにあるarmeabi-v7aとarmeabiの具体的な意味とその違いを教えてください。
-
ArrayAdapter は、リソース ID が TextView であることが必要です。
-
Android開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
-
Android Get set image.setImageResource(R.drawable.xxx) リソース
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
Android--shape--描画のコーナー、グラデーション、パディング、サイズ、ソリッド、ストロークのプロパティを指定する。
-
Android Studio常见错误之:Rendering Problems/The following classes could not be instantiated
-
[解決済み】Android Studioのgradleはビルドに時間がかかりすぎる
-
[解決済み] Android studioのGradleビルドの高速化