我们可以在下面目录中创建gradle.properties文件:
/home//.gradle/(Linux)
/Users//.gradle/(Mac)
C:\Users\\.gradle(Windows)
当然我们还可以在AndroidStudio的根目录中针对单个项目对gradle.properties进行配置
1 Gradle 守护进程(daemon)
你可以减少gradle的启动时间,只需要加上(在gradle.properties中):
org.gradle.daemon=true
它告诉gradle要使用守护进程来构建
2 并行项目执行
如果你的工程里有许多module依赖,加上下面这句(在gradle.properties中):
org.gradle.parallel=true
3 根据需要配置项目
不管这个项目是不是真的需要特殊的构建,gradle都会在任务执行之前加上那些配置,但是,可以通过"按需配置"来改变这种形为,只需要配置被有要求的项目。就像并行模式。"按需配置"对多个module依赖构建来说很有帮助。
4 全局的gradle.properties文件
在home路径下定义的properties文件要比在项目目录下定义的properties的优先级要高。如果启动时间相对与内存消耗来说没有那么重要的话,我们就可以避免用gradle守护进程。
properties文件:
# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
org.gradle.daemon=true
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true
# Enables new incubating mode that makes Gradle selective when configuring projects.
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true
上面的配置文件主要就是做, 增大gradle运行的java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以平行的运行。
5 Module消耗比较大
使用三方依赖时,使用aar或者jar要比使用Module要快很多。如果一个module并不是经常会被修改,那我们就要去考虑这么一个事情:我们需要将他们编译的时间消耗和检查上一次独立的构建是否及时这些动作带来的消耗。
--profile参数可以收集一些构建期间的信息并保存到 build/reports/profile 目录下并且以构建时间命名这些文件。
下面这份日志记录了总体花费时间以及各过程花费的时间,并以时间大小倒序排列,并且记录了任务的执行情况。
我们通常会发现lint 检查会花费点很多时间,而多数情况我们不需要它我们就可以在你的build.gradle文件下面添加 这个:
tasks.whenTaskAdded{ task->
if(task.name.equals("lint")) {
task.enabled=false
}
}