任务系统 (Tasks)
Gradle 构建的本质就是执行一系列有依赖关系的 Task。
1. 常用内置 Task
bash
./gradlew assembleDebug # 编译并生成测试包 (APK)
./gradlew bundleRelease # 编译并生成生产包 (AAB)bash
./gradlew clean # 删除 build 目录
./gradlew lint # 静态代码检查
./gradlew test # 运行所有本地单元测试bash
./gradlew :app:dependencies # 查看应用模块的完整依赖树 (解决版本冲突利器)2. 编写自定义 Task
在 build.gradle.kts 中使用 Kotlin DSL 定义任务。
简单打印任务
kotlin
tasks.register("hello") {
group = "custom"
description = "打印问候语"
doLast {
println("Hello from Custom Task!")
}
}任务依赖
kotlin
tasks.register("myTask") {
// 强制先运行 clean 任务
dependsOn("clean")
doLast {
println("Cleaning finished, running myTask.")
}
}3. 任务输入与输出 (增量构建)
Gradle 之所以快,是因为它支持增量构建。如果一个 Task 的输入文件没变,且输出文件已经存在,它就会显示为 UP-TO-DATE 并跳过。
kotlin
abstract class CopyFileTask : DefaultTask() {
@get:InputFile
abstract val sourceFile: RegularFileProperty
@get:OutputFile
abstract val destinationFile: RegularFileProperty
@TaskAction
fun action() {
sourceFile.get().asFile.copyTo(destinationFile.get().asFile, overwrite = true)
}
}4. 常用技巧:修改 APK 名称
kotlin
android {
applicationVariants.all {
val variant = this
variant.outputs.all {
val output = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl
output.outputFileName = "MyApps-\${variant.name}-\${variant.versionName}.apk"
}
}
}