新建一个Android项目,默认使用Gradle进行构建,相信大家或多或少都听过Gradle,Gralde也是现在项目构建的主流工具。看到项目中杂乱gradle配置,你是否手足无措,莫慌,本文将带你了解Android中Gradle插件。
1.什么是Gradle的Android插件
Gradle有很多插件,为了支持Android项目的构建,谷歌为Gradle编写了Android插件,新的Android构建系统就是由Gradle的Android插件组成的,Gradle是一个高级构建工具包,它管理依赖项并允许开发者自定义构建逻辑。Android Studio使用Gradle wrapper来集成Gradle的Android插件。需要注意的是,Gradle的Android插件也可以独立于AndroidStudio运行。
在 Android的官方网站提到了新的Android构建系统主要有以下几个特点:
- 代码和资源易于重用
- 无论是针对多个apk发行版还是针对不同风格的应用程序,都可以很容易创建应用程序的多个不同版本。
- 易于配置、扩展和自定义构建过程
- 良好的IDE集成
Gradle的Android插件结合Android Studio成为了目前最为流行的Android构建系统。
2.Android Studio的模块类型
Android Studio中的每个项目包含一个或多个含有源代码文件和资源文件的模块,这些模块可以独立构建、测试或调试,一个Android Studio的模块类型可以有以下几种:
2.1 Android应用程序模块
Android应用程序模块可能依赖于库模块,尽管许多Android应用程序只包含一个应用程序模块,构建系统会将其生成一个APK。
模块的build.gradle包含:
1 | apply plugin: 'com.android.application' |
2.2 Android 库模块
Android库模块包含可重用的特定于Android的代码和资源,构建系统会将其生成一个AAR。
模块的build.gradle包含:
1 | apply plugin: 'com.android.library' |
2.3 Java库模块
包含可重用的代码,构建系统会将其生成一个JAR包。
模块的build.gradle包含:
1 | apply plugin: 'com.android.library' |
3. 一个Android项目视图
所有构建文件在Gradle Scripts层级下显示,大概介绍下这些文件的用处。- 项目build.gradle:配置项目的整体属性,比如指定使用的代码仓库、依赖的Gradle插件版本等等。
- 模块build.gradle:配置当前Module的编译参数。
- gradle-wrapper.properites:配置Gradle Wrapper。
- gradle.properties:配置Gradle的编译参数。具体配置见Gradle官方文档
- settings.gradle:配置Gradle的多项目管理。
- local.properties:一般用来存放该Android项目的私有属性配置,比如Android项目的SDK路径。
接下来将简单介绍它们,先讲简单的,重点讲项目build.gradle和模块build.gradle。
3.1 local.properties
通常用于SDK路径、NDK路径等Android项目的私有属性配置,比如:local.properties
1 | ndk.dir=/Users/username/Downloads/android-ndk-r19c |
3.2 settings.gradle
配置Gradle的多项目管理,一个项目中所有的module都include在这里。比如:settings.gradle
1 | include ':LibJavaLibrary' |
3.3 gradle.properties
配置Gradle的编译参数。具体配置见Gradle官方文档
比如:
1 | Specifies the JVM arguments used for the daemon process. |
3.4 gradle.properties
配置Gradle Wrapper,主要是为了标准化项目。只要项目配置了gradle wrapper,就可以指定gradle版本等信息。关于Gradle Wrapper可以看这篇文章:
Gradle核心思想(四)看似无用,实则重要的Gradle Wrapper
比如:
1 | Sat Jun 19 21:24:56 CST 2021 |
3.5 项目build.gradle
项目build.gradle指的是根目录下的build.gradle文件。它的作用主要有以下几点:
统一管理项目的版本号,比如库的版本号、SDK版本号等
配置classpath的仓库地址,classpth一般是build.gradle脚本需要使用的资源,比如Gradle插件,必须添加如下配置:
1
classpath "com.android.tools.build:gradle:4.1.3"
配置module中依赖的仓库地址,通过allprojects的repositories {}配置
一个新建的Android项目,项目build.gradle内容如下:
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. |
通常项目build.gradle文件还有如下配置:
1 | //统一管理库版本号、SDK版本号等,在module中的build.gradle中可以通过rootProject.compileSdkVersion使用 |
3.6 模块build.gradle
一个新Android项目的app模块的build.gradle内容如下:
1 | plugins { |
模块中比较重要的几项配置:
1.Gradle的Android插件类型
apply引入的插件id为com.android.application,说明当前模块是一个应用程序模块,Gradle的Android插件有多个类型分别为:
- 应用程序插件,插件id为
com.android.application
,会生成一个APK。 - 库插件,插件id为
com.android.library
,会生成一个AAR,提供给其他应用程序模块用。 - java插件,插件id为
java-library
,会生成Jar包,提供给其他应用程序模块用。