Проект Android-градиента строит очень медленно

Мы изменили наш проект приложений для Android, чтобы использовать gradle, но заметили, что он строит значительно медленнее.

Ранее с ANT:
6 сек / 50 с (с чистым)

После градиента:
30 сек / 80 сек (с чистым)

Я профилировал решение с помощью:

gradle assembleDebug --profile 

Основными задачами в результирующем отчете были следующие задачи: (в сборке без очистки)

 :packageDebug 10.690s :processDebugResources 8.795s :compileDebugJava 7.644s 

У меня нет никаких идей по поводу получения более подробной информации о задачах.

Это нормально? Как это можно улучшить?
Я знаю, что новая система сборки все еще находится в бета-версии, но похоже, что другие строят намного быстрее.

Я огляделся, не найдя решение. Я пробовал несколько вещей, в том числе, чтобы убедиться, что дефолт gradle включен с файлом gradle.properties, содержащим это:

 org.gradle.daemon=true org.gradle.jvmargs=-Xms128m -Xmx256m org.gradle.parallel=true 

build.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") } 

У меня такая же проблема и решена с помощью этой настройки:

Файл -> Настройки -> Сборка, выполнение, развертывание -> Инструменты сборки -> Gradle -> Работа в автономном режиме

После этой установки уменьшите время на 3 минуты до 2 с728мс

Введите описание изображения здесь

Добавление файла gradle.properties с этим контентом помогает немного:

 org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Xmx256m 

Источник: https://medium.com/@erikhellman/boosting-the-performance-for-gradle-in-your-android-projects-6d5f9e4580b6

РЕДАКТИРОВАТЬ:
Я только что прочитал этот blogpost, у которого есть 6 советов, чтобы улучшить скорость построения градиента:
6 советов для ускорения сборки Gradle

Используйте gradlew assembleDebug в консоли быстрее

**** Говоря о новой версии AS в старом вопросе, может показаться странным. Но я чувствую, что это может помочь кому-то другому, кто ищет ответ ****

AndroidStudio 2.0, вероятно, поможет вам улучшить процесс сборки.

Следующие вещи будут играть важную роль в улучшении процесса сборки с помощью 2.0

  1. Мгновенный запуск – вам нужно включить его в настройках. Настройки файла – мгновенный запуск. Затем включите его

  2. AS 2.0 На самом деле включает параметр перезапуска приложения для улучшения развертывания.

  3. Если в вашем проекте есть модули. 2.0 будет делать предварительную очистку и поддерживать его. До тех пор, пока у нас не будет никаких изменений в модуле, он не потребует повторного dex, и на нем будет только часть изменения, которая будет работать на устройстве / эмуляторе. Серьезно, это экономит много времени. Делайте бизнес на основе модулей.

  4. Задачи оптимизации и обфускации Progaurd также играют роль в замедлении процесса строительства. Выполните следующие действия, чтобы прекратить оптимизацию и обфускацию с помощью progaurd, пока вы хотите только режим отладки.

 android { buildTypes { debug { minifyEnabled true useProgaurd false } release { minifyEnabled true useProgaurd true } } } 
  1. После того, как AS 2.0 с настройками по умолчанию поможет вам улучшить производительность здания.

Еще одним советом, который каждый разработчик обычно предлагает, является включение режима автономной работы плагина Gradle, если вы не добавили никаких новых зависимостей в библиотеке для конкретного процесса сборки.

Intereting Posts
Ошибка: класс действия {} не существует Настройки разработчика Android 4.2 по-прежнему недоступны Ошибка кода ошибки json сервера Parse Server 100 IllegalStateException: Невозможно изменить тег фрагмента, был андроид: сейчас переключатель android: switcher Android Firebase – «onDataChange» и «onCancelled» не вызывается без подключения к Интернету Хорошие книги по расширенной реальности на платформе Android? Акселерометр для Android Отображение изображений с эффектом карусели в android Динамически менять ключ манифеста отладки / выпуска для каждого аромата Местоположение Google Play Services не доступно после перезагрузки местоположения Странная ошибка в R.java, даже после очистки проекта: «Подчеркивания могут использоваться только с уровнем 1,7 или выше» Как остановить ProGuard от удаления Serializable интерфейса из класса Proguard удаляет анонимный класс в классе Anonymous в Java Увеличивать высоту Изменение размера эмулятора Android для моего экрана