Проект Android gradle строит очень медленно

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

До ANT:
6 сек /50 секунд (с чистым)

После gradle:
30 сек /80 сек (с чистым)

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

gradle assembleDebug --profile

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

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

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

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


Я огляделся, не найдя решения. Я пробовал несколько вещей, в том числе убедившись, что gradle deamon включен с файлом 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")
}

Ответы

Ответ 1

Добавление файла 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

EDIT:
Я только что прочитал этот блогпост, в котором есть 6 советов по улучшению скорости сборки gradle:
6 советов по ускорению создания gradle build

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

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

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

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

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

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

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

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

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