Проект 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

enter image description here


добавлять 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


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


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

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

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

  1. Instant Run - вам необходимо включить его в настройках. Файл-Настройки-Мгновенный Запуск. Затем включить это

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

  3. Если у вас есть модули в ваш проект. 2.0 будет сделать предварительно дэсин его и хранить его построить. Пока у нас нет каких-либо изменений в модуле, он не требует re-dex, и это dex's только часть модификации для запуска на устройстве/эмуляторе. Серьезно, это экономит много времени. Модуль Бизнес.

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

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

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