文章目录
0. 前言
自从将 Android 开发工具从 eclipse 迁移到 AndroidStudio 中之后,Android 工程构建越来越方便。见过很多项目中各式各样的 Gradle 配置语法,懵懵懂懂。遂花费近两周时间将官方文档通读一遍并整理出常用 Gradle 配置 Demo,以此博客作为说明。
1. 准备工作
一个最新版本的 AndroidStudio 毋庸置疑。下载地址:请戳。此处使用 3.5
版本。
Gradle 版本 5.4.1
,无须单独下载,在工程中配置好即可。
2. 基本概念
2.1. Module
软件工程中,通常采用模块化开发的策略,将一个项目划分成若干部分,多人协作开发中,每人完成一部分,最终完成整个项目。因此 AndroidStudio 也采用模块化管理的方式编译 Android 工程 。各个模块之间的依赖关系类似于树形结构,主 Module 作为根节点,其余多个库 Module 都直接或简介的被主 Module 引用。
2.2. Project
基于前面的描述,Project 即 AndroidStudio 打开的一个目录,其中包含 N+1 个 Module ,通过 Gradle 构建多个 Module 并最终合并成一个 apk 文件。
其实,在一个 Project 目录中,可以有多个主 Module ,每个主 Module 可以依赖相同的库 Module 并负责生成一个 apk 文件。通常不建议这么使用,因为这样会破坏 Module 之间的树形依赖关系,不利于后期维护。推荐将复用频率较高的库 Module 封装成 aar 文件,通过直接依赖或远程依赖的方式用于不同的主 Module 之中。
2.3. buildType & productFlavor
通过直译的方式 ,可以理解成 构建类型 和 产品特性 。构建类型中,默认包含 debug 和 release 两种类型。一些基本的差异如 :debug 包允许调试,release 包不允许调试。产品特性可以根据实际需要自行定义,如:收费和免费版本,汉语、英语及日语。不同的特性之间通过维度的概念区分。

最终如上图所示,生成 2x3x2 共 12 种不同的 apk 文件。
3. 工程结构
精简后的 AndroidStudio 工程结构如下:
├── app
│ ├── build.gradle
│ ├── proguard-project.txt
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ └── flueky
│ │ └── demo
│ │ └── MainActivity.java
│ └── res
│ ├── layout
│ │ └── activity_main.xml
│ └── values
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
- 文件夹 app 作为一个 Module ,必须有 build.gradle 文件,src 文件夹包含全部源文件:Java 文件、资源文件、清单文件等。
- 文件 build.gradle 不同于 app/build.gradle , 它用于整个工程的配置,而 app/build.gradle 只作用于 app Module 的配置。
- gradle 包含使用的 gradle 插件版本 。若未指定 ,AndroidStudio 会自动生成最新的 gradle 插件目录。
- gradlew、gradlew.bat 分别是 Mac/Linux 和 Windows 的脚本文件。关联于 gradle 插件版本,不可单独删除。
- settings.gradle 包含整个工程的所有 Module 的声明。
settings.gradle 示例:
// 主Module
include ':app'
// 库Module
include ':library'
// 添加外部库
include 'other-lib'
project(':other-lib').projectDir = new File(rootDir, "../other-sample/library")
4. 配置 Project
4.1. 构建脚本
buildscript {
repositories {
// 仓库地址
google()
jcenter()
mavenCentral()
}
// 工程的依赖配置
dependencies {
// 必须包含的 gradle 版本的构建工具。
classpath 'com.android.tools.build:gradle:3.4.1'
}
}
4.2. 全工程配置
// 全部工程配置,作用于每个 Module
allprojects {
r