使用AndroidStudio自定义Gradle插件

由于暂时不怎么忙,就想起自己自学下gradle的自定插件。网上找了几篇博客学习了下,但是不知道是不是我的版本原因按照博客来的都失败了。最后查看官网才知道自己错在哪里,记下来,也方便读者查看。

1、首先建立一个项目,GradleDemo。项目里面一个主module。

2、再在project里面新建一个library或者modlue,因为最后我们还是会把许多配置删除的,所以新建的modlue类型library和module随意。

3、修改当前模块的build.gradle的代码,改成如下:

apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
    //依赖的sdk
    compile localGroovy()
    compile gradleApi()
}
//用于上传gradle插件的任务
uploadArchives{
    repositories {
        mavenDeployer{
            //包名
            pom.groupId = 'com.demo.custom_plugin'
            //模块名
            pom.artifactId = 'custom_plugin'
            //版本号
            pom.version = '1.0.0'
            //上传的位置
            repository(url: uri('../repos'))
        }
    }
}

4、删除新建的文件及文件夹

原本的文件目录

删除之后的目录

新建文件夹:

在main目录下新建目录:

再main目录下面新建groovy文件夹, 这个使用来放置我们定义的groovy文件的。也就是插件的代码文件。

再新建com.demo.custom_plugin,这个可以看着插件的包名吧,暂时怎么叫着,其实可以随意的。因为后面我们可以再build.gradle中指定插件的包名,也就是groupId。

新建groovy文件:CustomPlugin.groovy文件。注意这个文件就是我们书写插件代码的文件

暂时加入的代码就是:

这个一定要实现接口Plugin,插件接口。我在里面新建了一个task任务。

class CustomPlugin implements Plugin<Project>{

    @Override
    void apply(Project project) {
        project.task("CustomTask"){
            println '这就是我自定义的插件。'
        }
    }
}

在src目录下,我们新建和main平级的目录:

resources。在里面新建META-INF文件夹,再在里面新建gradle-pulgins文件夹。新建文件:custom_plugin.properties文件

在custom_plugin.properties加入代码:

implementation-class=com.demo.custom_plugin.CustomPlugin

5、上面新建好了,就可以运行插件,生成插件的包了,运行方式,就是打开右侧gradle界面,找到我们插件的模块,点击build生成插件。之后再点击upload上传插件。先build再uplaodArchives。

 

6、点击了之后我们就会生成:

上面就是完成了插件的自定义,下面就是使用这个插件了。我就是会在使用的时候遇到一个大坑,下面就会说到。请看下面。

7、使用的配置:

再项目根目录的build.gradle中加入:

buildscript {
    repositories {
        maven{
          //插件上传的地址,上面我们时../repos。所以在这里我们就是可以使用./repos
            url uri('./repos')
        }
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
       //加入的groupI:模块id:版本号
        classpath 'com.demo.custom_plugin:custom_plugin:1.0.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

8、再我们要使用的项目里面加入:

注意不能有引号。

下面说下上面引入的插件名称:apply plugin:com.demo.custom_plugin.CustomPlugin其实是上面我们新建的Groovy文件的包名和类名。如果使用的androidstudio。点击这行代码我们会跳转到:class文件。很奇怪吧。

可以这么说上面这个class文件,其实就是我们上面再groovy里面新建的groovy文件编译之后生成的class文件。所以我们想使用这个插件,其实就是导入这个class文件。

导入之后我们可以再我们项目的other里面找到我们的task

点击CustomTask我们会生成:以下log

 

下面说下我遇到的大坑:网上所以的文章都是说新建应用插件的时候,使用的是properties文件名,也就是说他们是这样的

apply pulgin: custom_plugin   卧槽,不管我是怎么弄,都是会报找不到id。不知道那些大神的配置是否有没有贴出来了的。我都是按照他们来的但是就是不行。

最后还是看了官网自己摸索了下,才发现应该是我们新建的groovy的文件,如果有大神看到请指导下。是否是有其他方式。

源代码地址:https://download.csdn.net/download/heart2016/10877335

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值