如何设置Gradle的级别
如果您使用 Android Studio 中的按钮运行 Gradle,系统将使用 Android Studio 设置中设置的 JDK 运行 Gradle。如果您在 Android Studio 内部或外部的终端中运行 Gradle,JAVA_HOME 环境变量(如果已设置)会确定运行 Gradle 脚本的 JDK。如果未设置 JAVA_HOME,它会对您的 PATH 环境变量使用 java 命令。
为了获得最一致的结果,请确保设置 JAVA_HOME 环境变量,并在 Android Studio 中将 Gradle JDK 设置为同一 JDK。
运行 build 时,Gradle 会创建一个名为“守护程序”的进程来执行实际构建。只要 build 使用相同的 JDK 和 Gradle 版本,此过程就可以重复使用。重复使用守护程序可减少启动新 JVM 并初始化构建系统的时间。
如果您使用不同的 JDK 或 Gradle 版本启动构建,则会创建额外的守护程序,从而消耗更多的 CPU 和内存。
提示 :同时处理多个项目时,如果可能,请在其 gradle-wrapper.properties 文件中指定相同的 Gradle 版本,以减少创建的 Gradle 守护程序数量。
即不同工程 gradle 版本设置相同,java版本也设置相同。

Projects 和 tasks
projects 和 tasks是 Gradle 中最重要的两个概念。
任何一个 Gradle 构建都是由一个或多个 projects 组成。每个 project 包括许多可构建组成部分。 这完全取决于你要构建些什么。举个例子,每个 project 或许是一个 jar 包或者一个 web 应用,它也可以是一个由许多其他项目中产生的 jar 构成的 zip 压缩包。一个 project 不必描述它只能进行构建操作。它也可以部署你的应用或搭建你的环境。不要担心它像听上去的那样庞大。 Gradle 的 build-by-convention 可以让您来具体定义一个 project 到底该做什么。
每个 project 都由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作。如编译,打包,生成 javadoc,发布到某个仓库等操作。
到目前为止,可以发现我们可以在一个 project 中定义一些简单任务,后续章节将会阐述多项目构建和多项目多任务的内容。
Hello world
你可以通过在命令行运行 gradle 命令来执行构建,gradle 命令会从当前目录下寻找 build.gradle 文件来执行构建。我们称 build.gradle 文件为构建脚本。严格来说这其实是一个构建配置脚本,后面你会了解到这个构建脚本定义了一个 project 和一些默认的 task。
要尝试这一点,请创建以下名为 build.gradle 的构建脚本。
第一个构建脚本
build.gradle
task hello {
doLast {
println 'Hello world!'
}
}
然后在该文件所在目录执行 gradle -q hello
PS C:\Users\liyd\Desktop\gradleTest> gradle -q hello
Hello world!
快速定义任务
用一种更简洁的方式来定义上面的 hello 任务。
快速定义任务
build.gradle
task hello {
println 'Hello world!'
}
上面的脚本又一次采用闭包的方式来定义了一个叫做 hello 的任务,本文档后续章节中我们将会更多的采用这种风格来定义任务
构建 Java 项目
gradle 官方构建流程
运行 gradle build 的输出结果:
Output of gradle build
> gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
Total time: 1 secs
Android Studio中构建流程
Android studio中生成一个AAR文件执行流程,使用build构建生成AAR文件时,相较于gradle官方构建流程执行的task要多了很多。
> Task :mylibrary:preBuild UP-TO-DATE
> Task :mylibrary:preDebugBuild UP-TO-DATE
> Task :mylibrary:compileDebugAidl NO-SOURCE
> Task :mylibrary:mergeDebugJniLibFolders UP-TO-DATE
> Task :mylibrary:mergeDebugNativeLibs NO-SOURCE
> Task :mylibrary:stripDebugDebugSymbols NO-SOURCE
> Task :mylibrary:copyDebugJniLibsProjectAndLocalJars UP-TO-DATE
> Task :mylibrary:compileDebugRenderscript NO-SOURCE
> Task :mylibrary:generateDebugBuildConfig UP-TO-DATE
> Task :mylibrary:generateDebugResValues UP-TO-DATE
> Task :mylibrary:generateDebugResources UP-TO-DATE
> Task :mylibrary:packageDebugResources UP-TO-DATE
> Task :mylibrary:parseDebugLocalResources UP-TO-DATE
> Task :mylibrary:processDebugManifest UP-TO-DATE
> Task :mylibrary:generateDebugRFile UP-TO-DATE
> Task :mylibrary:extractDebugAnnotations UP-TO-DATE
> Task :mylibrary:javaPreCompileDebug UP-TO



被折叠的 条评论
为什么被折叠?



