Android gradle项目构建非常缓慢

时间:2014-02-27 14:22:13

标签: android android-studio intellij-idea gradle

我们已将Android应用项目更改为使用gradle,但已注意到它的构建速度明显变慢。

在ANT之前:
6 sek / 50秒(干净)

用gradle后:
30 sek / 80 sec(干净)

我用以下方法描述了解决方案:

gradle assembleDebug --profile

结果报告中的主要任务是:(在构建中没有干净)

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

我对获取有关这些任务的更多详细信息没有任何想法。

这是正常的吗?怎么可以改善呢?
我知道新的构建系统仍处于测试阶段,但似乎其他人的构建速度要快得多。


我在没有找到解决方案的情况下环顾四周,我尝试了几个方法,包括确保使用包含以下内容的gradle.properties文件启用gradle deamon:

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

4 个答案:

答案 0 :(得分:3)

使用此内容添加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

修改
我刚刚阅读了这篇博客文章,其中有6个技巧可以提高gradle构建速度:
6 tips to speed up your Gradle build

答案 1 :(得分:3)

我有同样的问题并通过此设置解决:

文件 - >设置 - >构建,执行,部署 - >构建工具 - > Gradle - >离线工作

此设置后将时间缩短3分钟至2s728ms

enter image description here

答案 2 :(得分:0)

在控制台中使用gradlew assembleDebug它更快

答案 3 :(得分:0)

****在旧问题主题中谈论AS的新版本可能看起来很奇怪。但我觉得它可以帮助其他人,他们寻找答案****

AndroidStudio 2.0可能会帮助您改进构建过程。

以下内容将在使用2.0

改进构建过程中发挥重要作用
  1. 即时运行 - 您需要在“设置”中启用它。 文件设置 - 即时运行。然后启用它

  2. AS 2.0实际上包含应用程序重启选项以改进部署。

  3. 如果您的项目中有模块。 2.0会预先解除它并保持它的构建。在我们对模块进行任何更改之前,它不需要重新设置,并且它只需要在设备/模拟器上运行修改部分。说真的,这节省了很多时间。做基于模块的业务。

  4. Progaurd优化和混淆任务也在减缓构建过程中起作用。 如果您只想要调试模式,请执行以下操作以停止使用progaurd进行优化和混淆。

  5. android {
       buildTypes {
         debug {
           minifyEnabled true
           useProgaurd false
         } 
         release {
           minifyEnabled true
           useProgaurd true
         }
       }
    }
    
    1. 在所有AS 2.0之后,使用默认设置本身可以帮助您提高建筑性能。
    2. 如果您没有为特定的构建过程添加任何新的库依赖项,那么每个开发人员通常建议的另一个提示是启用Gradle插件离线模式。