1. Gradle入门:Gradle是什么、Gradle与Maven/Ant对比、Gradle核心概念(Project、Task、Plugin)、Groovy vs Kotlin DSL、安装与配置Gradle环境
1.1 Gradle到底是什么?
说实话,我第一次接触Gradle时,心里想的是:「又来了个新工具?」
但用了一段时间后,我彻底改观了。Gradle本质上是一个自动化构建工具。它帮你把源代码变成可运行的APK,中间还帮你处理依赖、混淆、签名等一系列杂活。
你可以把它想象成一个项目管家。你告诉它「我要打包」,它就会按你定好的流程,一步步把事情做完。而且这个管家很聪明——它只做那些真正需要做的事,不会每次都从头来一遍。
核心要点: Gradle = 构建逻辑 + 依赖管理 + 任务编排。它不是简单的脚本,而是一个完整的构建框架。
1.2 Gradle vs Maven vs Ant:我该选谁?
很多新手会纠结这个问题。我当年也纠结过。直接说结论吧:Android开发,选Gradle就对了。但为了让你心里有底,我简单对比一下。
| 特性 | Ant | Maven | Gradle |
|---|---|---|---|
| 构建脚本 | XML(啰嗦) | XML(约定大于配置) | Groovy/Kotlin DSL(简洁灵活) |
| 依赖管理 | 手动管理 | 自动(Maven仓库) | 自动(Maven/Ivy仓库) |
| 性能 | 一般 | 较慢 | 快(增量构建、构建缓存) |
| 灵活性 | 高(但太原始) | 低(严格约定) | 极高(可自定义Task和Plugin) |
| Android支持 | 不原生支持 | 需插件 | 官方首选 |
我在一个老项目里见过Ant脚本,那叫一个酸爽——几百行的XML,改个路径要找半天。Maven呢,规规矩矩,但改点东西就得翻文档。Gradle就不一样了,代码即配置,想怎么玩都行。
我的建议: 如果你在维护老项目,可能还得跟Ant/Maven打交道。但新项目?直接上Gradle,别犹豫。
1.3 Gradle三大核心概念:Project、Task、Plugin
这三个概念,你搞懂了,Gradle就入门了一半。我当年就是卡在这里,后来想通了,其实没那么玄乎。
1.3.1 Project(项目)
每个build.gradle文件对应一个Project。在Android项目中,根目录有一个Project,每个Module(比如app、library)也是一个Project。
说白了,Project就是你要构建的东西。它包含了所有配置信息——依赖、插件、任务等等。
1.3.2 Task(任务)
Task是Gradle里最小的执行单元。比如assembleDebug、clean、test,这些都是Task。
你可以把Task想象成一个函数——它做一件具体的事。多个Task可以组合成一个工作流。
// 一个简单的Task示例
task hello {
doLast {
println 'Hello, Gradle!'
}
}
运行 gradle hello,你就会看到输出。就这么简单。
1.3.3 Plugin(插件)
Plugin就是一堆Task的集合。比如Android插件,它帮你注册了assemble、install、lint等一系列Task。
你想想看,如果没有插件,你得自己写多少Task?编译、打包、签名……手写能写到崩溃。插件就是帮你偷懒的。
一句话总结: Project是容器,Task是动作,Plugin是动作包。
1.4 Groovy DSL vs Kotlin DSL:我该学哪个?
这个问题,我几乎每次讲课都有人问。直接说答案:学Kotlin DSL。
为什么?因为Google官方已经转向Kotlin DSL了。而且你想想,你写Android代码用的是Kotlin,构建脚本也用Kotlin,语言统一,多舒服。
Groovy DSL也不是不能用,但有几个痛点:
- 动态类型,写错了要到运行时才发现
- IDE支持不如Kotlin好
- 语法太灵活,容易写出看不懂的代码
Kotlin DSL就不一样了:
- 静态类型,编译期就能发现错误
- IDE自动补全、跳转都完美
- 跟你的业务代码用同一门语言
// Groovy DSL
android {
compileSdkVersion 33
defaultConfig {
applicationId "com.example.app"
}
}
// Kotlin DSL
android {
compileSdk = 33
defaultConfig {
applicationId = "com.example.app"
}
}
看到区别了吗?Kotlin DSL用了=赋值,更符合Kotlin语法习惯。我个人习惯用Kotlin DSL,写起来很顺畅。
注意: 如果你在维护老项目,可能还是Groovy DSL。别急着迁移,先把业务搞稳定再说。新项目直接上Kotlin DSL。
1.5 安装与配置Gradle环境
这部分我踩过不少坑,给你梳理一下最稳的步骤。
1.5.1 安装Gradle
有两种方式:
- 手动安装:去官网下载二进制包,解压,配环境变量
- 通过SDKMAN安装(推荐):一行命令搞定
// 用SDKMAN安装
sdk install gradle 8.5
// 验证安装
gradle -v
我个人推荐SDKMAN,切换版本特别方便。我曾经手动安装搞错过版本,排查了半天,后来就老老实实用SDKMAN了。
1.5.2 配置Gradle Wrapper
这个一定要用。Gradle Wrapper保证了团队所有成员用同一个Gradle版本,避免「我本地能跑,你那边不行」的尴尬。
// 生成Wrapper
gradle wrapper --gradle-version 8.5
执行后,项目里会多出几个文件:
gradlew(Linux/Mac脚本)gradlew.bat(Windows脚本)gradle/wrapper/gradle-wrapper.properties(版本配置)gradle/wrapper/gradle-wrapper.jar(下载器)
以后团队成员直接用 ./gradlew build 就行,不用自己装Gradle。
避坑指南: 我曾经把gradle-wrapper.properties里的版本号写错了,结果CI构建一直失败。后来发现是版本号少了个点。嗯,这种低级错误,犯一次就记住了。
1.5.3 配置Android项目
在Android Studio里新建项目时,它会自动帮你配好Gradle。你只需要关注几个文件:
settings.gradle.kts:项目模块配置build.gradle.kts(根目录):全局配置app/build.gradle.kts:模块配置
// settings.gradle.kts
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
rootProject.name = "MyApp"
include(":app")
// 根目录 build.gradle.kts
plugins {
id("com.android.application") version "8.2.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.20" apply false
}
配置好这些,你就可以用 ./gradlew assembleDebug 打包了。
1.6 本章知识体系
下面这张图,帮你把本章的核心逻辑串起来:
这张图把本章内容串起来了。你看,Gradle是中心,往外延伸出四个方向:跟谁比、有什么、用什么写、怎么装。搞懂这些,你就有了一个完整的知识框架。
好了,第一章就到这里。记住:Gradle不只是一个构建工具,它是你Android开发的得力助手。后面我们会一步步深入,从写Task到自定义Plugin,把Gradle玩透。
公众号:蓝海资料掘金营,微信deep3321