如何在AndroidStudio中自定义Gradle插件(二)

 上一篇文章中我们介绍了Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。

有些时候,我们会有一些个性化的构建需求,比如我们引入了第三方库,或者我们想要在通用构建过程中做一些其他的事情,这时我们就要自己在系统默认构建规则上做一些修改。这时候我们就要自己向Gradle”下命令“了,这时候我们就需要用Gradle能听懂的话了,也就是Groovy。

本篇文章简单介绍下groovy语法。

 

一、Groovy介绍

Groovy是一种动态语言。这种语言比较有特点,它和Java一样,也运行于Java虚拟机中。恩??对头,简单粗暴点儿看,你可以认为Groovy扩展了Java语言。比如,Groovy对自己的定义就是:Groovy是在 java平台上的、 具有像Python, Ruby 和 Smalltalk 语言特性的灵活动态语言, Groovy保证了这些特性像 Java语法一样被 Java开发者使用。

关于groovy的一些语法可以参考这篇文章,https://blog.csdn.net/Innost/article/details/48228651,具体我就不想起讲了

 

二、创建gradle的module

(1) 首先,你得新建一个Android Project
(2) 然后再新建一个Module,这个Module用于开发Gradle插件,同样,Module里面没有gradle plugin给你选,但是我们只是需要一个“容器”来容纳我们写的插件,因此,你可以随便选择一个Module类型(如Phone&Tablet Module或Android Librarty),因为接下来一步我们是将里面的大部分内容删除,所以选择哪个类型的Module不重要。
(3) 将Module里面的内容删除,只保留build.gradle文件和src/main目录。

(4)删除build.gradle文件里的所有内容,并添加如下代码:

apply plugin: 'groovy'  //需要为这个module添加groovy插件,这样module才能识别groovy
apply plugin: 'maven'   //添加maven,groovy构建需要用到的一些maven的工具
apply plugin: 'maven-publish' //可选,如果你想讲自己的gradle添加到远程时需要用到的


dependencies {
    compile gradleApi()  //拿到gradleAPI
    compile localGroovy() 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.tools.build:gradle:3.3.1' //和跟project的引用一样
}

repositories {
    mavenCentral()
    google()
    jcenter()
}

(5)由于gradle是基于groovy,因此,我们开发的gradle插件相当于一个groovy项目。所以需要在main目录下新建groovy目录
(6) groovy又是基于Java,因此,接下来创建groovy的过程跟创建java很类似。在groovy新建包名,如:com.hc.plugin,然后在该包下新建groovy文件,通过new->file->MyPlugin.groovy来新建名为MyPlugin的groovy文件。
(7) 为了让我们的groovy类申明为gradle的插件,新建的groovy需要实现org.gradle.api.Plugin接口。

(8)现在,我们已经定义好了自己的gradle插件类,接下来就是告诉gradle,哪一个是我们自定义的插件类,因此,需要在main目录下新建resources目录,然后在resources目录里面再新建META-INF目录,再在META-INF里面新建gradle-plugins目录。最后在gradle-plugins目录里面新建properties文件,注意这个文件的命名,你可以随意取名,但是后面使用这个插件的时候,会用到这个名字。

比如,你取名为com.hc.gradle.properties,而在其他build.gradle文件中使用自定义的插件时候则需写成:com.hc.gradle

上述步骤弄好之后,大致就是如下图所示的样子了

如何在AndroidStudio中自定义Gradle插件(二)