我们已将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")
}
答案 0 :(得分:3)
使用此内容添加gradle.properties
文件有点帮助:
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx256m
修改强>
我刚刚阅读了这篇博客文章,其中有6个技巧可以提高gradle构建速度:
6 tips to speed up your Gradle build
答案 1 :(得分:3)
我有同样的问题并通过此设置解决:
文件 - >设置 - >构建,执行,部署 - >构建工具 - > Gradle - >离线工作
此设置后将时间缩短3分钟至2s728ms
答案 2 :(得分:0)
在控制台中使用gradlew assembleDebug它更快
答案 3 :(得分:0)
****在旧问题主题中谈论AS的新版本可能看起来很奇怪。但我觉得它可以帮助其他人,他们寻找答案****
AndroidStudio 2.0可能会帮助您改进构建过程。
以下内容将在使用2.0
改进构建过程中发挥重要作用即时运行 - 您需要在“设置”中启用它。 文件设置 - 即时运行。然后启用它
AS 2.0实际上包含应用程序重启选项以改进部署。
如果您的项目中有模块。 2.0会预先解除它并保持它的构建。在我们对模块进行任何更改之前,它不需要重新设置,并且它只需要在设备/模拟器上运行修改部分。说真的,这节省了很多时间。做基于模块的业务。
Progaurd优化和混淆任务也在减缓构建过程中起作用。 如果您只想要调试模式,请执行以下操作以停止使用progaurd进行优化和混淆。
android { buildTypes { debug { minifyEnabled true useProgaurd false } release { minifyEnabled true useProgaurd true } } }
如果您没有为特定的构建过程添加任何新的库依赖项,那么每个开发人员通常建议的另一个提示是启用Gradle插件离线模式。