在 Android 开发中,构建系统是项目编译、打包、依赖管理、生成 APK/AAB 的核心工具。Google 官方从 Android Studio 早期就全面转向 Gradle,目前(Android Studio 最新版本)Android 项目 100% 使用 Gradle,不再直接使用 Maven 作为构建工具。
Maven 主要作为依赖仓库格式(Maven Central、Google Maven 等)被 Gradle 调用。你可以用 Gradle 把库打包成 AAR 并发布到 Maven 仓库,但主构建工具永远是 Gradle。
下面从概念、区别、文件结构、配置示例、实际使用一步步详细讲解。
1. Maven 是什么?(为什么 Android 不用它做主构建)
- Maven 是 Apache 的项目管理工具(不止构建,还管文档、报告)。
- 核心文件:pom.xml(Project Object Model,XML 格式)。
- 核心理念:约定优于配置(Convention over Configuration)。
- 构建生命周期固定:
clean → validate → compile → test → package → verify → install → deploy。 - 优点:配置简单、所有 Java 项目都懂、仓库生态成熟(Maven Central)。
- 缺点:XML 写起来繁琐、扩展性差、构建速度慢、大项目容易卡、任务间依赖关系不灵活。
Android 历史:
- 早期(2010 年前)用 Ant。
- 2011-2013 年有
maven-android-plugin,但非常难用、插件维护差。 - 2013 年 Google 推出 Android Studio + Gradle,彻底废弃 Maven 构建。
- 现在你只能用 Gradle 把模块发布成 Maven 坐标(group:artifact:version),供其他项目依赖。
总结:Maven 在 Android 里只剩“仓库”角色,不推荐新项目用 Maven 构建 Android。
2. Gradle 是什么?(Android 官方构建系统)
- Gradle 是新一代构建自动化工具,支持 Java、Kotlin、Android、C++ 等。
- 核心语言:Groovy DSL(旧)或 Kotlin DSL(推荐,.kts 文件)。
- 核心理念:任务(Task) + 插件(Plugin) + 输入/输出,构建一个**有向无环图(DAG)**自动调度。
- Android Gradle Plugin(AGP) 是 Google 官方插件,专门为 Android 提供
compileSdk、minSdk、buildTypes、productFlavors等功能。
Gradle 运行三大阶段(官方文档):
- 初始化:读取
settings.gradle,确定所有模块。 - 配置:执行所有
build.gradle(.kts),注册任务、解析依赖。 - 执行:根据 DAG 只运行必要任务(增量构建,输入没变就跳过,极快)。
优势对比 Maven:
- 脚本更灵活(代码而非 XML)。
- 增量构建 + 缓存,速度远超 Maven(大项目快 3-10 倍)。
- 支持多模块、复合构建、自定义 Task 极易。
- 依赖管理更强大(可强制覆盖、排除、版本目录 BOM)。
3. Android 项目 Gradle 文件结构(官方标准)
典型项目根目录结构(Android Studio 新建项目):
MyApp/
├── gradle/ # Gradle Wrapper
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties # 指定 Gradle 版本(如 8.9)
├── gradlew # Linux/Mac 执行脚本
├── gradlew.bat # Windows 执行脚本
├── settings.gradle.kts # 项目设置(必须)
├── build.gradle.kts # 项目级(插件版本)
├── gradle.properties # 全局属性
├── local.properties # 本地 SDK 路径(git ignore)
├── app/ # 主模块
│ ├── build.gradle.kts # 模块级配置(最重要)
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/ 或 kotlin/
│ │ │ ├── res/
│ │ │ └── AndroidManifest.xml
│ │ ├── debug/ # debug 专用资源
│ │ └── release/ # release 专用
│ └── proguard-rules.pro
└── libs.versions.toml # 推荐:版本目录(BOM)
4. 核心文件详细讲解 + 示例(Kotlin DSL 推荐)
settings.gradle.kts(项目入口)
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app") // 包含模块
项目级 build.gradle.kts(只放插件版本)
plugins {
id("com.android.application") version "9.1.0" apply false
id("com.android.library") version "9.1.0" apply false
id("org.jetbrains.kotlin.android") version "2.0.20" apply false
}
模块级 app/build.gradle.kts(最重要)
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.example.myapp"
compileSdk = 36
defaultConfig {
applicationId = "com.example.myapp"
minSdk = 24
targetSdk = 36
versionCode = 1
versionName = "1.0"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
// 多渠道(产品风味)
flavorDimensions += "channel"
productFlavors {
create("google") { dimension = "channel" }
create("huawei") { dimension = "channel" }
}
}
dependencies {
implementation("androidx.core:core-ktx:1.13.1")
implementation(project(":mylibrary")) // 本地模块依赖
implementation("com.google.android.material:material:1.12.0")
}
5. 常用命令(终端或 Android Studio Terminal)
./gradlew tasks # 查看所有任务
./gradlew assembleDebug # 打包 debug APK
./gradlew assembleRelease # 打包 release
./gradlew bundleRelease # 生成 AAB(Google Play 推荐)
./gradlew clean # 清空 build 目录
./gradlew dependencies # 查看依赖树(解决冲突神器)
6. Maven 与 Gradle 在 Android 中的关系总结
| 维度 | Maven | Gradle(Android) |
|---|---|---|
| 配置语言 | XML (pom.xml) | Kotlin/Groovy DSL |
| 灵活性 | 低(固定生命周期) | 极高(自定义 Task、DAG) |
| 构建速度 | 慢 | 快(增量 + 缓存 + 并行) |
| Android 支持 | 已废弃 | 官方 AGP |
| 依赖仓库 | Maven Central | 可直接用 Maven 仓库 + Google 仓库 |
| 多模块 | 较难 | 原生支持(include + project()) |
| Android 适用 | 仅发布库 | 唯一推荐构建工具 |
7. 学习建议(2026 年最新)
- 新项目直接用 Kotlin DSL(.kts)。
- 强烈推荐 版本目录
libs.versions.toml统一管理版本。 - 想加速构建:打开 Gradle 并行、守护进程、配置缓存。
- 官方文档必看:
- Gradle 构建概览:developer.android.com/build/gradl…
- 配置 build:developer.android.com/build
掌握了上面这些,Android 项目 90% 的构建问题都能解决。如果你有具体问题(如多渠道打包、R8 混淆、复合构建、迁移旧 Maven 项目等),可以继续问我,我可以给出完整配置代码!