【Android Gradle学习笔记】第三天:Gradle Task
Gradle Task
在 Android 开发中,Gradle 作为构建工具的核心,其任务(Task)机制是实现自动化构建的基础。
从代码编译、资源处理到 APK 打包,每一步操作都由 Gradle 任务驱动。
基本概念
Gradle 中的任务(Task) 是最小的执行单元,代表构建过程中的一个具体操作(如编译 Java 代码、复制资源文件、生成 APK 等)。
每个任务都有明确的目标,且可以被配置、组合和扩展。
在 Android 项目中,build.gradle
(模块级)和 build.gradle
(项目级)是定义任务的主要文件。
Gradle 支持两种定义任务的方式:通过 task
关键字快速创建和通过 Task
类型手动配置。
创建任务
1. 基础创建方式(通过 task
关键字)
最简洁的创建方式是使用 task
关键字,直接指定任务名称和类型(可选,默认是 DefaultTask
)。
这里我是用的是kotlin DSL
写法:
// 模块级 build.gradle
android { ... }// 创建一个简单任务,默认类型为 DefaultTask
tasks.register("hello") {// 任务配置:可以在这里设置任务属性description = "打印简单的问候信息" // 任务描述,在 Gradle 面板中显示group = "Custom Tasks" // 任务分组,便于管理// 为任务添加执行逻辑doLast {println("Hello, Gradle Task!")}
}
犹豫添加了分组,在Android Studio里同步后可以看到生成了对应的分组:
这里我们的task也就生成了。
当然也可以通过命令行去执行该任务的命令:
./gradlew hello # Linux/Mac
gradlew.bat hello # Windows
执行后会输出:Hello, Gradle Task!
2. 指定任务类型(功能更明确)
Gradle 提供了多种内置任务类型(如 Copy
、Delete
、Exec
等),通过指定类型可以快速实现特定功能,无需重复编写逻辑。
// 创建一个复制文件的任务(类型为 Copy)
task copyAssets(type: Copy) {description = "复制自定义资源到 assets 目录"group = "Custom Tasks"// 配置 Copy 任务的源目录和目标目录from "src/main/customAssets" // 源文件路径into "src/main/assets" // 目标路径
}// 创建一个执行命令的任务(类型为 Exec)
task runScript(type: Exec) {description = "执行一个 shell 脚本"group = "Custom Tasks"// 配置命令(Windows 下可改为 cmd 命令)commandLine "echo", "执行自定义脚本..." // 等同于执行 `echo "执行自定义脚本..."`
}
Copy
任务:用于文件复制,通过from
和into
指定源和目标。Exec
任务:用于执行系统命令(如 shell 脚本、Python 脚本等),通过commandLine
配置命令及参数。
执行前:
执行后:
任务的依赖关系
在实际构建流程中,任务往往不是孤立的。
例如,“生成 APK” 必须依赖 “编译代码” 和 “处理资源” 完成后才能执行。
Gradle 提供了多种方式定义任务依赖。
基础依赖:dependsOn
通过 dependsOn
可以指定当前任务依赖的其他任务,即“被依赖的任务先执行,当前任务后执行”。
// 定义任务 A
task taskA {doLast {println "执行 Task A"}
}// 定义任务 B,依赖于任务 A
task taskB {dependsOn taskA // 任务 B 依赖任务 AdoLast {