背景
Gradle是Android开发过程中重要的打包工具,官方给出了好多现成的插件。但是有些场景还是需要根据业务来自定义打包插件,这里简单介绍一下如何自定义一款打包插件
新建module
首先在Androidstudio中新建module,如图所示。
新建完成后,整体的文件格式如图,这里删除了一些无用的文件与文件夹
配置Gradle
下面我们将Gradle按照Plugin的发布方式进行配置。
plugins {
id 'groovy'
id 'java-gradle-plugin'
id 'maven-publish'
}
group = "com.example.firstplugin"
version="1.0.0-SNAPSHOT"
description="First Plugin"
sourceSets {
main {
groovy {
srcDir 'src/main/groovy'
}
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/main/resources'
}
}
}
gradlePlugin {
plugins {
modularPlugin {
//Plugin ID
id="com.example.firstplugin"
//Plugin implementation
implementationClass="com.example.plugin.MyCustomizedPlugin"
}
}
}
- groovy插件:使用 Groovy 语言开发必备;
- java-gradle-plugin插件:用来帮助开发Gradle的插件,会自动应用Java Library插件,并在dependencies中添加implementation gradleApi()
- maven-publish插件:用来将打包的AAR包推送到maven仓库的插件
group、version和description分别是对应AAR包的参数,这里不做赘述。sourceSets用来指定对应的文件位置。gradlePlugin参数现在暂时还用不到,稍后解释。
编写代码
Gradle插件的核心类是Plugin,一般使用 Project作为泛型实参。当使用方引入插件后,其实就是调用了 Plugi中apply()
方法,我们可以把 apply() 方法理解为插件的执行入口,具体的业务代码如下:
我们还需要将插件与自定义的实现类联系起来,这里需要在build.gradle中增加gradlePlugin参数,这里需要配置对应的PluginID与PluginClass。
验证
将自定义的Plugin打包并推送到本地maven仓库,通过open ~/.m2检查本地maven仓库
在项目层级的build.gradle中增加自定义插件
在其他子module中的build.gradle中应用插件,点击其中的Task查看结果,成功实现自定义Plugin。如果觉得有用请点赞,有问题欢迎评论区大家讨论交流