Android Studio开发插件入门教程

312 阅读2分钟

首先,我们在项目中新建一个library模块,这里选择Java or Kotlin Library,其实用Android Library也可以,之后我们其实会把大部分文件都删掉。

填完零零碎碎的东西建好了之后,我们把除了build.gradle、src/main之外其他的文件都删掉

接下来我们需要修改build.gradle,具体修改项以及解释可以在代码注释中写到。

apply plugin: 'java-library'
apply plugin: 'kotlin'
//添加groovy和maven插件,groovy是我们选用groovy作为开发插件的语言
//maven是打包提交到远程服务器或本地maven仓库所用
apply plugin: 'groovy'
apply plugin: 'maven'


dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    //添加gradle和groovy的依赖
    implementation gradleApi()
    implementation localGroovy()
}

sourceCompatibility = "1.7"
targetCompatibility = "1.7"

//group和version在使用插件的时候会用到
group='com.proermo.plugin'
version='0.0.1'

uploadArchives {
    repositories {
        mavenDeployer {
            //提交到远程服务器:
            // repository(url: "http://www.xxx.com/repos") {
            //    authentication(userName: "admin", password: "admin")
            // }
            //本地的Maven地址设置为../repos
            repository(url: uri('../repos'))
        }
    }
}

接下来我们在src/main中新建配置文件以及我们的代码文件。

  • main/resources/META-INF/自定义名.properties,这里properties的文件名即是我们使用插件的时候apply plugin: 'properties文件名'
  • main/groovy/package/***.groovy,这里就是我们编写插件逻辑代码的地方。

在插件逻辑代码中必须要有的就是plugin的实现类,是我们插件的入口。

//MyPlugin.groovy
package com.proermo


import org.gradle.api.Plugin
import org.gradle.api.Project

public class MyPlugin implements Plugin<Project> {


    @Override
    void apply(Project project) {
        println "========================"
        println "hello world!"
        println "========================"
    }
}

插件逻辑代码写好了,我们就可以在.properties文件中注册我们的插件

//com.proermo.example.plugins.properties
implementation-class=com.proermo.MyPlugin

到了这里我们的插件基本上就完成了,接下来就是打包上传到远端服务器或者本地,然后就是使用。

  • 打包,点击图中红色圈住的地方都可以进行打包。

  • 使用。

    在项目中使用可以先在项目根目录的build.gradle文件添加插件所在的maven仓库地址,我这里是本地所以写的本地目录。以及写入插件的classpath,命名规则是group(插件的gradle文件中定义了):module名:version(插件的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 {
            maven {//本地Maven仓库地址
                url uri('./repos')
            }
            google()
            jcenter()
        }
        dependencies {
            ...
            //格式为-->group:module:version
            classpath 'com.proermo.plugin:module_plugins:0.0.1'
            
          }
      }
    
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    接着在需要用的module的gradle文件中添加插件

    ...
    //resources/META-INF/gradle-plugins下的properties文件名称
    apply plugin: 'com.proermo.example.plugins'
    
    android {
        ...
    }
    
    dependencies {
        ...
    }
    

最后验证我们插件是否使用成功,只要构建我们的项目,看到下图输出即可。

从这次最基本插件开发过程可以了解到,classpath对应的是我们插件的module,而apply plugin其实是将插件module中在properties文件中注册的plugin引入到项目中,每一个插件的module其实是可以注册多个plugin。

最后奉上源码地址