自定义Gradle插件之"Hello World"

自定义Gradle插件之”Hello World”


0.新建一个用于开发这个插件的文件夹

1.确定Plugin id

Plugin id一般定义为java 包名。

  • 由字母和数字及“.”和“-”组成
  • 至少有一“.”字符
  • org.gradle 和 com.gradleware 不能使用
  • 不能以“.“开始或结尾
  • 不能含有连续的“.”

本实例的Plugin id为:me.zhangls.custom

2.配置插件

在确定的文件夹下建好src/main/resources/META-INF/gradle-plugins/目录结构,在使用那个plugin id新建一个me.zhangls.custom.properties文件。里面配置为
implementation-class=me.zhangls.custom.CustomPlugin

3.写Plugin类

根据implementation-class那个包名路径,具体目录为src/main/groovy/me/zhangls/custom/CustomPlugin.groovy去建立Plugin实现类

package me.zhangls.custom

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

public class CustomPlugin implements Plugin<Project> {
    void apply(Project project) {
         project.task('hello') << {
            println "Hello World"
        }
    }
}

解释说明

  • 这个Project就是后面那个使用插件的那个build.gradle(一个build.gradle文件就是一个project)
  • 为什么一定要project.task('hello') <<这么怪异的写法,直接用project.task('hello')不可以吗?它们的区别是:前一个在配置阶段,后一个是在运行阶段。实际的含义你懂的,嘻嘻。

4.安装插件

//apply是Project的一个方法,plugin是一个参数,maven是一个值
//用来部署到本地maven仓库
apply plugin: 'maven'
//用来编译Groovy代码(因为我的插件是用groovy写的)
apply plugin: 'groovy'

//dependencies是Project的一个方法,而{}里面是一个闭包,相当于匿名方法块。
dependencies {
    //添加Gradle Api依赖
    compile gradleApi()
    //添加本地groovy依赖
    compile localGroovy()
}

//这三个字段都要加,用来表示安装到本地maven仓库的位置。
group = 'me.zhangls'
//网上有这么写的,也有效果,主要是可以改变项目名称,但是在文档中没有找到相关说明。
//也可以不写,那么会取文件夹的名称,来作为这个值。
archivesBaseName = 'custom'
//版本号
version = '0.1'

执行gradle install安装的本地Maven仓库
建议这个时候,可以使用Android Studiod导入这个项目,进行后续的开发。

  • 本身as不支持创建gradle plugin功能
  • 建好相应的目录结构,as可以创建一个项目

5.使用插件

//配置运行脚本所需要的环境
buildscript {
    //配置仓库
    repositories {
        mavenLocal()
    }   
    //制定要依赖仓库里具体插件
    dependencies {
        classpath 'me.zhangls:custom:0.1'
    } 
}
//应用这个插件
apply plugin: 'me.zhangls.custom'

执行gradle hello,就可以看到Hello World了

6.写Task类(可选)

  1. 修改CustomPlugin
    project.task('hello',Type: HelloTask)
  2. 添加一个HelloTask
package me.zhangls.custom;

import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;

public class HelloTask extends DefaultTask {
    //当运行这个任务的时候,执行这个方法。
    @TaskAction
    def action() {
        println "hello"
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 开发中,Gradle 是一个非常重要的构建工具,可以用来构建和打包 Android 应用程序。Gradle 插件是一种工具,可以扩展 Gradle 的功能,使其能够支持更多的功能。而多渠道打包是 Android 应用程序开发中非常重要的一个方面,它可以让我们将应用程序打包成不同的版本,并发布到不同的应用商店或市场上。 在 Android Studio 中,我们可以通过自定义 Gradle 插件来实现多渠道打包,具体步骤如下: 1. 创建 Gradle 插件项目 在 Android Studio 中创建一个新项目,选择 Gradle 插件项目模板。这将创建一个 Gradle 插件项目,并生成一些默认的代码和文件。 2. 实现多渠道打包 在插件项目中,我们需要实现多渠道打包的功能。这可以通过 Gradle 的 productFlavors 和 buildTypes 配置来实现。我们可以定义多个 productFlavors,并为每个 productFlavor 配置不同的参数,例如应用程序的包名、应用程序名称等。在 buildTypes 中,我们可以为每个 buildType 配置不同的参数,例如应用程序的版本号、是否开启混淆等。 3. 打包应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的打包。这个任务可以使用 Gradle 提供的 assemble 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的打包参数,并使用 Gradle 的 assemble 任务来生成应用程序的 APK 文件。 4. 发布应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的发布。这个任务可以使用 Gradle 提供的 uploadArchives 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的发布参数,并使用 Gradle 的 uploadArchives 任务将应用程序发布到不同的应用商店或市场上。 总的来说,自定义 Gradle 插件多渠道打包是 Android 应用程序开发中非常重要的一个方面。通过自定义 Gradle 插件,我们可以实现更加灵活和高效的应用程序打包和发布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值