Gradle 笔记 - Gradle 基础

hackernew
发布于 2021-2-26 10:30
浏览
0收藏

Gradle 笔记 - Gradle 基础

 

《Gradle for Android 中文版》笔记

 

理解 Gradle 基础


Gradle 构建的脚本–build.gradle
Gradle 有约定优于配置的原则,即为设置和属性提供默认值。

 

基于 Groovy 的领域专用语言(DSL)。
Groovy 是一种基于 Java 虚拟机的动态语言。
想创建自己的任务和插件,那么对 Groovy 有更深层次的理解就显得尤为重要。

 

项目和任务


Gradle 中,最重要的两个概念是项目和任务。

 

  • 每一次构建都包括至少一个项目,每一个项目有包括一个或多个任务。
  • 每个build.gradle 文件都代表一个项目。
  • 任务定义在构建脚本里。


当初始化构建过程时,Gradle 会基于 build 文件组装项目和任务对象。

 

一个任务对象包含一系列动作对象,这些动作对象之后会按顺序执行。
一个单独的动作对象就是一个待执行的代码块,它和 Java 中的方法类似。

 

构建生命周期


为了简化构建过程,构建工具会新建一个动态的模型流(叫做 Directed Acyclic Graph(DAG)),所有任务都会被一个接一个地执行,不循环和重复执行。
在构建的配置阶段会生成依赖关系图,那些没有依赖的任务通常会被优先执行。

 

Gradle 构建通常有三个阶段:

  • 初始化:创建项目实例,一个项目如有多个模块,每个模块都有 build.gradle 文件,那么创建多个项目实例。
  • 配置:构建脚本会被执行,并为每个项目实例创建和配置任务。
  • 执行:Gradle 将决定哪个任务会被执行。


构建配置文件


整个项目的 build.gradle 文件:

buidscript {
	repositories {
		jcenter()
	}
	dependencies {
		classpath 'com.android.tools.build.gradle:3.5.0'
	}
}

 

JCenter 是一个预配置的 Marven 仓库,放在 repositories 代码块中代表被配置为整个构建过程的依赖仓库。

 

Android 应用插件:

apply plugin: 'com.android.application'

每一个安卓项目都应该申请该插件,通常在 app 模块的 build.gradle 文件中。

用于扩展 Gradle 构建脚本的能力。
在项目中应用一个插件,项目就可以使用该插件预定义的一些属性和任务。


Android 依赖库插件:

apply plugin: 'com.android.library'

依赖库的 build.gradle 文件需要声明应用 Android 依赖库插件。

一个模块可以是 Android 应用模块,或者是一个 Android 依赖模块,但不能二者都是,即不能同时申请上面两种插件。


当使用 Android 插件时,不仅可以配置针对 Android 的特殊约定,还可以生成只应用于 Android 的任务。

android {
	compileSdkVersion 29  // 编译的 SDK 版本
	buildToolsVersion "29.0.2" // 构建工具版本
}

这是 Android 特殊约定的一部分。Android 插件为 Android 的开发需求提供了一整套的 DSL。

 

项目结构

Gradle 笔记 - Gradle 基础-鸿蒙开发者社区

Gradle Wrapper


Gradle 是一个不断发展的工具,新版本可能打破向后兼容性,使用 Gradle Wrapper 可以避免这个问题,并能确保构建时可重复的。

Gradle Wrapper 为 Windows 操作系统提供了一个 batch 文件(为其他操作系统提供了 shell 文件),当运行这段脚本时,需要的 Gradle 版本会被自动下载(如果不存在)和使用。这样就无需手动安装正确的 Gradle 版本。

 

terminal 上运行

$ gradlew -v

 

或在命令行中运行

$ gradlew.bat -v

 

查看 Gradle 版本号和其他额外参数信息。

 

运行基本构建任务

$ gradlew tasks

打印所有可用的任务列表,添加 --all 参数,会打印每个任务对应依赖的详细介绍。

$ gradlew assembleDebug

其他还有

 

  • Check:运行所有的检查。
  • Build:触发 assemble 和 check。
  • Clean:清除项目的输出(output)


 

分类
已于2021-2-26 10:30:57修改
收藏
回复
举报
回复
    相关推荐