当前位置: 首页 > news >正文

【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 提供了多种内置任务类型(如 CopyDeleteExec 等),通过指定类型可以快速实现特定功能,无需重复编写逻辑。

// 创建一个复制文件的任务(类型为 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 任务:用于文件复制,通过 frominto 指定源和目标。
  • Exec 任务:用于执行系统命令(如 shell 脚本、Python 脚本等),通过 commandLine 配置命令及参数。

执行前:
在这里插入图片描述
执行后:
在这里插入图片描述

任务的依赖关系

在实际构建流程中,任务往往不是孤立的。

例如,“生成 APK” 必须依赖 “编译代码” 和 “处理资源” 完成后才能执行。

Gradle 提供了多种方式定义任务依赖。

基础依赖:dependsOn

通过 dependsOn 可以指定当前任务依赖的其他任务,即“被依赖的任务先执行,当前任务后执行”。

// 定义任务 A
task taskA {doLast {println "执行 Task A"}
}// 定义任务 B,依赖于任务 A
task taskB {dependsOn taskA  // 任务 B 依赖任务 AdoLast {
http://www.dtcms.com/a/478640.html

相关文章:

  • 网站建设哪家学校好php网站开发环境一
  • 汽车4G车载TBOX智能信息终端
  • 网络协议之DNS
  • Go 语言变量
  • 江科协----蓝牙模块及蓝牙小程序介绍
  • 横栏建设网站东莞横沥做网站
  • 全国的p2p网站建设怎么搭建一个小程序
  • 阿里云 RocketMQ 5.0 可观测最佳实践
  • 新手400单词+文章阅读理解
  • 从零构建鸿蒙高效数据恢复工具:完整实战教程与可运行Demo
  • Gecko SDK从入门到提高(3)
  • 南乐县住房和城乡建设局网站室内装修设计说明
  • 芦苞建网站公司竞价推广直通车
  • Windows Linux 操作系统分区管理
  • 网站做友链有什么用企业网站开发费用
  • 2025年下半年加密货币市场展望:机遇与挑战并存
  • OpenCV(九):NumPy中的矩阵的检索与赋值
  • 保定哪家做网站专业长沙的在线商城网站建设
  • 加密货币与金融体系融合:趋势洞察与未来展望
  • “icoin如何重新定义交易所的安全与体验”
  • Spring Boot微服务架构详解
  • 鸿蒙:将项目的rawfile目录下全部文件拷贝到app沙箱目录
  • SQL sever数据库--第一次作业
  • 青春励志剧《我的鸵鸟先生》杀青,陈若尧唱演结合,演绎反派摇滚歌手
  • CCF-GESP 等级考试 2025年9月认证C++四级真题解析
  • 旅游网站建设水平评价做网站总结
  • 网站模版建设工具中国域名拍卖网
  • 做旅游网站的引言自字网站建设教程
  • [工作流节点26] 流程性能优化与大规模并发场景实战指南
  • 十二、kubernetes 1.29 之 存储 Volume、pv/pvc