Android开发过程中遇到的坑

自定义Gradle插件流程

2020-11-29  本文已影响0人  enjoy_coding

android自定义Gradle插件流程记录如下(当然参考了书籍和网上的资料):

第一步:新建android module

新建项目名字随意例如:customPlugin,然后选择把新建的customPlugin项目中src/main目录下的文件全部删除,然后新建groovy和resources目录,其中groovy用来书写我们的逻辑代码,resources目录用来保存plugin的配置信息

第二步:构建plugin的配置信息

resources目录下按照格式新建META-INF目录,在META-INF目录中新建gradle-plugins目录,然后新建插件名称.properties文件。具体格式如下:resources/META-INF/gradle-plugins/插件名称.properties文件。其中除了插件名称是自定义的其他都是固定格式。

第三步:构建plugin的操作类

在groovy目录下新建包名(自定义路径)然后新建TestPlugin 的groovy文件(当然Java也是可以的,只是groovy语法相对灵活;Java就要写在Java目录下了)例如:

class TestPlugin implements Plugin<Project> {
    @Override
    void apply(Project target) {
        println("----Plugin apply run --------------")
    }
}

第四步:让TestPlugin文件生效

在第二步配置的文件(resources/META-INF/gradle-plugins/插件名称.properties文件)中添加:implementation-class=自定义包名.TestPlugin。
经过以上四步一个自定义的Gradle插件就算完成了(虽然这个插件没毛用),但是想要在项目中配置使用还需要发布出去才能用,接下来介绍发布插件,这里主要介绍发布到本地使用。

发布插件到本地的流程

1,首先要用AndroidStudio下载mavenDeployer插件,并重启AndroidStudio。
2,在插件的build.gradle文件中添加如下信息:
plugins {
    id 'groovy'
    id 'maven'
}
或者
apply plugins: 'groovy'
 apply plugins: 'maven'

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

dependencies {
    implementation gradleApi()
    implementation localGroovy()
}


uploadArchives{
    repositories.mavenDeployer{
        repository(url: uri('../repo'))//本地文件路径
        pom.groupId = '插件名称'//插件的名称需要和resources/META-INF/gradle-plugins/插件名称.properties文件名称一致,否则会导致引用出问题,可以自定义
        pom.artifactId = 'artifactId'//artifactId 自定义,在引用的时候要用到
        pom.version = '1.0.0'//插件版本号
    }
}

这样就可以把maven设置到本地仓库了。

3,执行uploadArchives命令生成repo目录

这个可以用命令行:Windows 用gradlew uploadArchives mac:./gradlew uploadArchives
还可以点击AndroidStudio的task生成如图:


uploadArchives 示意图.jpg

完成以上操作我们就把插件发布到本地maven仓库了。

4,接下来就是项目引入了

首先在项目的跟目录下操作build.gradle文件,如下所示:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()
        maven{//这个是本地仓库的目录
            url uri('repo')
        }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "插件名称:插件artifactId :1.0.0"//这个就是上面uploadArchives配置的: pom.groupId:pom.artifactId:pom.version

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

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

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

最后一步就是在项目中的build.gradle中添加

plugins {
    id '插件名称'
}
或者
apply plugin:'插件名称'

到这一步整个自定义插件就算完成功能了(这些都是固定格式,只要稍微注意就行,重点是插件内容的实现)。

上一篇下一篇

猜你喜欢

热点阅读