Проект Android gradle строится очень медленно
мы изменили наш проект приложения для Android, чтобы использовать gradle, но заметили, что он строится значительно медленнее.
раньше с ANT:
6 sek / 50 sec (с чистой)
после с gradle:
30 sek / 80 sec (с чистой)
Я профилировал решение с:
gradle assembleDebug --profile
основными задачами в полученном отчете были задачи thies: (в сборке без очистки)
:packageDebug 10.690s
:processDebugResources 8.795s
:compileDebugJava 7.644s
у меня нет никаких идей насчет подробная информация о задачах thies.
это нормально? Как это можно улучшить?
Я знаю, что новая система сборки все еще находится в бета-версии, но похоже, что другие строят намного быстрее.
Я огляделся, не найдя решения, я попробовал несколько вещей, в том числе убедился, что gradle deamon включен с помощью gradle.файл свойств, содержащий это:
org.gradle.daemon=true
org.gradle.jvmargs=-Xms128m -Xmx256m
org.gradle.parallel=true
построить.Gradle в:
buildscript {
repositories {
mavenCentral()
maven { url 'http://download.crashlytics.com/maven' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.+'
classpath 'com.google.guava:guava:14.0.1'
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
classpath 'me.tatarka:gradle-retrolambda:1.1.1'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2'
}
}
repositories {
mavenCentral()
maven { url 'http://download.crashlytics.com/maven' }
}
apply plugin: 'android'
apply plugin: 'crashlytics'
apply plugin: 'retrolambda'
apply plugin: 'android-apt'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.google.guava:guava:14.0.1'
compile 'com.crashlytics.android:crashlytics:1.+'
apt "org.androidannotations:androidannotations:3.0.1"
compile "org.androidannotations:androidannotations-api:3.0.1"
}
apt {
arguments {
resourcePackageName "com.example"
androidManifestFile variant.processResources.manifestFile
}
}
android {
packagingOptions { //Fix: http://stackoverflow.com/a/20675331/860488
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
compileSdkVersion 10
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 7
targetSdkVersion 10
buildConfigField "boolean", "useProductionServices", "true"
}
buildTypes {
testflight.initWith(buildTypes.debug)
debug {
packageNameSuffix ".debug"
buildConfigField "boolean", "useProductionServices", "false"
}
testflight {
packageNameSuffix ".testflight"
buildConfigField "boolean", "useProductionServices", "true"
}
release {
buildConfigField "boolean", "useProductionServices", "true"
}
}
}
retrolambda {
compile "net.orfjackal.retrolambda:retrolambda:1.1.2"
jdk System.getenv("JAVA8_HOME")
}
4 ответов
У меня такая же проблема и решена с помощью этой настройки:
Файл - > Настройки - > сборка, выполнение, развертывание - > инструменты сборки - > Gradle - > Автономная работа
после этой настройки сократите время на 3 минуты до 2s728ms
добавлять gradle.properties
файл с этим контентом немного помогает:
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx256m
EDIT:
Я только что прочитал этот блог, который имеет 6 советов по улучшению скорости сборки gradle:
6 советов для ускорения сборки Gradle
* * * * говоря о новой версии, как в старом вопросе поток может выглядеть странно.Но я чувствую, что это может помочь кому-то еще, кто ищет ответ****
AndroidStudio 2.0, вероятно, поможет вам улучшить процесс сборки.
следующие вещи будут играть важную роль в улучшении процесса сборки с 2.0
Instant Run - вам необходимо включить его в настройках. Файл-Настройки-Мгновенный Запуск. Затем включить это
поскольку 2.0 фактически включает опцию перезапуска приложения для улучшения развертывания.
Если у вас есть модули в ваш проект. 2.0 будет сделать предварительно дэсин его и хранить его построить. Пока у нас нет каких-либо изменений в модуле, он не требует re-dex, и это dex's только часть модификации для запуска на устройстве/эмуляторе. Серьезно, это экономит много времени. Модуль Бизнес.
оптимизация и запутывание Progaurd задачи также играют определенную роль в замедлении процесса строительства. Сделайте следующее, чтобы остановить оптимизацию и запутывание с помощью progaurd, пока вы хотите только режим отладки.
android { buildTypes { debug { minifyEnabled true useProgaurd false } release { minifyEnabled true useProgaurd true } } }
- после того, как вообще как 2.0 с настройками по умолчанию сам поможет вам улучшить производительность здания.
еще один совет каждый разработчик предложил бы обычно сделать автономный режим плагина Gradle включен, если вы не добавили новую библиотеку зависимости для конкретного процесса сборки.