前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义Gradle Plugin

自定义Gradle Plugin

作者头像
PhoenixZheng
发布2018-12-13 17:50:40
1K0
发布2018-12-13 17:50:40
举报

Gradle 是 Android 构建环节非常重要的一环,但并不是所有Android开发者对Gradle都足够熟悉,因为它在我们平时业务开发中,相对使用频率还是较少的。 小编准备以自定义Gradle插件为入口,带大家一起认识一下Gradle。

自定义Gradle插件的方式

自定义Gradle的方式一共有三种: 1.直接在构建文件build.gradle中编写Plugin,这种方法写的Plugin无法被其他构建文件引用 2.buildSrc工程,可以在自己的工程内随意使用,但是其他工程就无法使用 3.单独的工程中自定义Gradle Plugin,上传到远端maven库等,其他工程通过添加依赖,引用这个插件

Gradle plugin 示例

1.在build.gradle中编写

代码语言:javascript
复制
apply plugin: DemoPlugin

class DemoPlugin implements Plugin<Project>{
    @Override
    void apply(Project target) {
       println("DemoPlugin in build.gradle")
    }
}

然后build一下,可以看到控制台输出的Log了。

2.在buildSrc Module中创建

首先创建一个module,名字必须为buildSrc,选择 Java Library。然后module中会自动生成一个java文件夹以及对应的java文件,我们需要把java文件夹删掉,再重建一个groovy 文件夹以及groovy文件。

DemoPlugin.groovy:

代码语言:javascript
复制
package com.example

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

class DemoPlugin implements Plugin<Project>{
    @Override
    void apply(Project project){
        println("DemoPlugin in buildSrc Module")
    }
}

buildSrc Module 中的build.gradle 文件:

代码语言:javascript
复制
apply plugin: 'groovy'

dependencies {
  implementation gradleApi()
  implementation localGroovy()
}

最后在我们的app 下的 build.gradle 调用即可:

代码语言:javascript
复制
apply plugin: com.example.DemoPlugin

3.生成可供其他项目复用的插件

首先跟上一种方式一样,创建一个Module,名字没有要求,我们建一个 gradle-plugin:

DemoPlugin.groovy 的创建同上。

主要差异在于module中的build.gradle,主要工作是把我们的gradle插件编译成一个jar包,放到一个地方供工程使用, 我们这里直接放在工程的plugin_libs文件夹下:

代码语言:javascript
复制
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
    compile gradleApi()
    compile localGroovy()
}

group='com.example.plugin'
version='0.0.1'
archivesBaseName='gradle-plugin'

uploadArchives{
    repositories {
        mavenDeployer{
            repository(url:uri('../plugin_libs'))
        }
    }
}

然后,点击uploadArchives生成相应的插件

可以看到对应的目录下已经有我们构建的插件了:

接着,我们需要在我们的工程中依赖这个插件,工程根目录的build.gradle:

代码语言:javascript
复制
buildscript {
  repositories {
      google()
      jcenter()
      maven{
          url(uri('./plugin_libs'))
      }
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.example.plugin:gradle-plugin:0.0.1'
  }
}

最后,调用的时候依然是在app底下的build.gradle:

代码语言:javascript
复制
apply plugin: com.example.DemoPlugin

当然,我们可以把插件发布到公司的仓库,这样其它项目也能直接依赖了。

这里主要简单介绍自定义Gradle插件的方法,我们后面会做一些有实际功能的插件,再给大家介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android每日一讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义Gradle插件的方式
  • Gradle plugin 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档