【问题标题】:Android gradle project builds very slowlyAndroid gradle 项目构建非常缓慢
【发布时间】:2014-03-31 01:06:06
【问题描述】:

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

在使用 ANT 之前:
6 sek / 50 秒(清洁)

使用 gradle 之后:
30 sek / 80 秒(清洁)

我已经描述了解决方案:

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

【问题讨论】:

标签: android android-studio intellij-idea gradle


【解决方案1】:

我有同样的问题并通过这个设置解决了:

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

此设置后将时间减少 3 分钟至 2s728ms

【讨论】:

    【解决方案2】:

    添加包含此内容的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

    【讨论】:

      【解决方案3】:

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

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

      以下内容将在改进 2.0 的构建过程中发挥重要作用

      1. Instant Run - 您需要在设置中启用它。 文件-设置-即时运行。然后启用它

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

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

      4. Progaurd 优化和混淆任务也在减慢构建过程中发挥作用。 当您只需要调试模式时,请执行以下操作以停止使用 progaurd 进行优化和混淆。

      android {
         buildTypes {
           debug {
             minifyEnabled true
             useProgaurd false
           } 
           release {
             minifyEnabled true
             useProgaurd true
           }
         }
      }
      
      1. 毕竟 AS 2.0 的默认设置本身可以帮助您提高构建性能。

      如果您没有为特定构建过程添加任何新的库依赖项,则每个开发人员通常会建议的另一个提示是启用 Gradle 插件离线模式。

      【讨论】:

        【解决方案4】:

        在控制台中使用 gradlew assembleDebug 更快

        【讨论】:

        • 谢谢 - 但这更多是关于命令行与 Android 工作室的。与 ANT 相比,我更需要它。
        • 我有一种感觉,任何认为“gradle 很快”的人实际上并没有在真正的 Android 应用上工作。
        猜你喜欢
        • 1970-01-01
        • 2014-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多