Android Plugin 概述

Plugin前言

用Android Studio的会发现,我们新建的Android工程会在根目录的build.gradle文件内引入一个classpath:
classpath 'com.android.tools.build:gradle:x.y.z',

我们还会在build.gradle引入如下的plugin:

1
2
3
4
// app
apply plugin: 'com.android.application'
// library
apply plugin: 'com.android.library'

我们同时会在如下的范围内配置各种东东

1
2
3
android{
}

这到底是怎么工作的呢?

简述

这其实是一个Gradle Plugin,它表示引入了com.android.tools.build:gradle-x.y.z的jar包。这个包需要在repositories里面声明的位置找。
引入了这样一个jar包,我们才能引入必要的plugin:

1
2
3
4
// app
apply plugin: 'com.android.application'
// library
apply plugin: 'com.android.library'

我们apply plugin之后,如果对应的plugin接受配置,我们就可以按照plugin的要求进行配置。

1
2
3
android {
// 以及这里面的一大堆配置
}

看了前面的内容,我们来分析一下apply plugin之后发生了什么。
基于com.android.tools.build:gradle:2.2.2分析。

在源码的gradle目录下,我们可以看到resources/META-INF/gradle-plugins目录下存在一些以.properties结尾的文件。
这些文件就是我们前面apply plugin: xxx的名字,每个配置文件里的内容说明引入该plugin相当于引入哪个具体的文件。
在这个系列的文章里,我们主要关注两个插件,
com.android.applicationcom.android.library

com.android.application.properties里的内容为:
implementation-class=com.android.build.gradle.AppPlugin

com.android.library.properties里的内容为:
implementation-class=com.android.build.gradle.LibraryPlugin

这个就指明了我们要研究的类;
application插件对应com.android.build.gradle.AppPlugin
library插件对应com.android.build.gradle.LibraryPlugin

好了,这篇简述就到此为止了,接下来分几篇来研究整个AndroidPlugin流程。