本文主要是介绍Android Gradle 构建环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考:
Chapter 12. The Build Environment:https://docs.gradle.org/current/userguide/build_environment.html
百度百科:gradle
Gradle
是 Android Studio
默认的项目自动化构建工具。当工程越来越大时,需要编译的时间也越来越长,对其进行进一步的设置能够帮助加速编译
主要内容
gradle.properties
浅析build_environment.html
浅析- 通过代理(
proxy
)访问web
- 什么是解耦工程(
decoupled project
) - 小小总结
- 链接
gradle.properties
浅析
gradle.properties
浅析 gradle.properties
位于工程目录下,是项目级别的 Gradle
设置(Project-wide Gradle settings
)
# Project-wide Gradle settings.# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m# 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
它主要讲了 4
点内容
- 对于
Android Studio
用户而言,通过IDE
设置的Gradle
配置将会重载这里的配置,即IDE
配置级别高于gradle.properties
文件配置 - 更多的关于如何配置构建环境(
build environment
),参考网址 http://www.gradle.org/docs/current/userguide/build_environment.html 指定用于守护进程(
daemon process
)的JVM
参数,该设置特别有助于调整内存设定,然后在下面列出一个设置:`org.gradle.jvmargs=-Xmx1536m`
如果配置下面选项,
Gradle
将以平行模式(incubating parallel mode
)运行:org.gradle.parallel=true
并特别说明此选项仅适用于解耦工程(
decoupled projects
),参数网址 http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
build_environment.html
浅析
build_environment.html
浅析 在上一小节中,关于构建环境给出了参考网址 build_environment.html
,下面就进入该网址看看有哪些可以帮助进行配置
参考:Gradle User Guide
该网址是 Gradle
用户指南(Gradle User Guide
)第 12
章 - The Build Environment
主要内容有 3
点:
- 通过
gradle.properties
配置构建环境 Gradle
属性和系统属性- 通过代理(
proxy
)访问web
通过 gradle.properties
配置构建环境
参考:Environment variables
Gradle
配置可通过 gradle.properties
文件进行,将该文件版本化有助于整个开发组在同一个开发环境下工作
可在多个环境下配置 gradle.properties
文件(就是说在多个位置下放置 gradle.properties
文件均有效),其按如下顺序执行(当某个 Gradle
选项被多个位置的 gradle.properties
文件设置时,按下面顺序的最后一个生效):
- 来自于项目目录下的
gradle.properties
文件(in project build dir
) - 来自于
gradle user home
目录下的gradle properties
文件(in gradle user home
) - 来自于系统属性。比如,
when -Dsome.property is set on the command line
Note:GRADLE_USER_HOME
默认指 USER_HOME/.gradle
,我在 Windows
环境下就是 C:\Users\zj\.gradle
下面介绍几个自认为有用的属性:
org.gradle.daemon
:当设为true
时,Gradle
守护进程被用于运行构建项目。对于local developer builds
而言这是最好的属性(看起来文档推荐使用这个)org.gradle.java.home
:指定Java
路径。可以设为jdk
路径或者jre
路径,不过使用jdk
路径更安全。未进行设定时会使用默认设置org.gradle.jvmargs
:指定用于守护进程的jvmargs
参数,该参数对于调整内存设置特别有用。如果内存足够大的话,可以多分配一些内存用于构建,上一小节中gradle.properties
默认设为:`org.gradle.jvmargs=-Xmx1536m`
还可设置为:
org.gradle.jvmargs=-Xmx2048m
我将其设置为:
org.gradle.jvmargs=-Xmx4096m
org.gradle.configureondemand
:在多项目工程中能够加速编译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
org.gradle.parallel
:配置此选项,Gradle
将以并行模式运行(in incubating parallel mode
)。看起来运行时间会更短,不过gradle.properties
文件中指明该选项仅适用于解耦工程(decoupled projects
)
Forked Java processes
本小节简单讲解了一下推荐使用 Gradle
守护进程的原因,就是上面讲到的许多设置(比如 Java
版本,最大的堆大小)仅当一个新的 JVM
被启动时才被指定,这意味着当存在不同的 gradle.properties
文件(这里不清楚是说上面提到的不同的地方的 gradle.properties
文件还是不同工程的 gradle.properties
文件),必须启动一个新的 JVM
进程,而如果运行在守护进程中,JVM
仅需启动一次即可(这里用到了 with correct parameters
,不理解什么是 correct paramters
),详细原因可参考 Chapter 7. The Gradle Daemon
Gradle
属性和系统属性
文中提到 Gradle
提供了多种方法来为工程构建增加属性,比如-D / -P
命令行选项等等
个人感觉比较有用的一项是通过属性文件(properties file
)来增加属性。就是将 gradle.properties
文件放置在 Gradle user home
目录下(defined by the “GRADLE_USER_HOME” environment variable, which if not set defaults to USER_HOME/.gradle
),或者你的项目目录下。其中,对于多项目工程,可将其放置在所有子项目目录下。并且上一小节提到了,在 Gradle user home
目录下的 gradle.properties
文件的优先级高于项目目录下。
通过代理(proxy
)访问 web
proxy
)访问 web
可以通过 gradle.properties
文件配置 HTTP
或者 HTTPs
代理,此文件可放置在项目目录下或者 Gradle home
目录下
它给了两个示例:
HTTP
代理:systemProp.http.proxyHost=www.somehost.org systemProp.http.proxyPort=8080 systemProp.http.proxyUser=userid systemProp.http.proxyPassword=password systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost
HTTPs
代理:systemProp.https.proxyHost=www.somehost.org systemProp.https.proxyPort=8080 systemProp.https.proxyUser=userid systemProp.https.proxyPassword=password systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost
其实还是没太理解为什么要设置代理,在网上也找了一些文章,大概就说 Gradle
每次构建都要联网(外网),设置代理能够防止出现 Gradle Sync Failed
现象,但是我好像没有这个问题(当然已经连了外网了,只是没设代理)
另外,同样可以在 IDE
上进行设置,点击菜单栏 File -> Settings -> Appearance & Behavior -> System Settings > HTTP Proxy
Note:在一个组内共同开发时,有时别人设置了代理,可能会导致项目无法编译,可以注释掉试一下
什么是解耦工程(decoupled project
)
decoupled project
) 参考:
decoupled_projects
优化gradle编译速度实践
Two projects are said to be decoupled if they do not directly access each other's project model.
Decoupled projects may only interact in terms of declared dependencies:project dependencies (Section 25.4.3, “Project dependencies”) and/or task dependencies (Section 16.5, “Task dependencies”)
解耦应该是指两个工程之间至多仅存在项目依赖或者 task
依赖
小小总结
按照上面的说法,现在进行一个小小的总结,可以在 Gralde home
目录下放置一个 gradle.properties
文件,修改如下:
# Project-wide Gradle settings.# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# org.gradle.jvmargs=-Xmx1536m# 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
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx4096m
org.gradle.configureondemand=true
org.gradle.parallel=true
链接
看到一篇不错的博文,收藏一下:
Android Studio Gradle优化方法(一般人我不告诉他)
这篇关于Android Gradle 构建环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!