写给 Android 开发者的 Gradle 系列(三)撰写 plugin

本文是Android开发者关于Gradle插件撰写的系列教程,讲解如何将插件项目化并应用于实际开发。通过示例介绍如何在Gradle插件中hook任务,例如在release包中向apk的assets目录添加图片,而在debug包中不添加。文章还强调了理论基础和实践经验的重要性。
摘要由CSDN通过智能技术生成

}
}
}
}

第四行通过 project.extensions.create(String name, Class<T> type, Object... constructionArguments) 来获取 testExtension 闭包中的内容并通过反射将闭包的内容转换成一个 TestPluginExtension 对象。

  1. build.gradle 中添加一个 testExtension 闭包:

testExtension {
message ‘Hello Gradle’
}

  1. 在命令行键入以下信息:

./gradlew pluginTest

将会看到输出结果——

> Task :app:pluginTest

Hello Gradle

项目化

到目前为止谈及到的东西都还是一个普通的、不可以发布到仓库的插件,如果想要将插件发布出去供他人和自己在项目中 apply,需要进行以下步骤将插件变成一个 Project——

  1. 更改 build.gradle 文件内容:

apply plugin: ‘groovy’

dependencies {
compile gradleApi()
compile localGroovy()
}

此时可以观察到 External Libraries 中多出了 gradle-api/gradle-installation-beacon/groovy 库。其中,gradle 的版本是基于项目下 gradle wrapper 中配置的版本——

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 创建 src/main/resources/META-INF/gradle-plugins/插件名.properties,例如 src/main/resources/META-INF/gradle-plugins/com.sample.test.properties,然后将 properities 文件内容改为 implementation-class=Plugin 路径,例如 implementation-class=com.sample.test.TestPlugin

  2. build.gradle 文件中通过 apply plugin: '插件名' 引入插件 —— apply plugin: 'com.sample.test'

  3. 在命令行键入以下信息:

./gradlew pluginTest

将会看到输出结果——

> Task :app:pluginTest

Hello Gradle

当然,以上仅是告诉各位读者如何将 plugin 项目化,并未涉及到如何将 plugin 提交到仓库中,关于 jcenter 仓库提交方式可借鉴手摸手教你如何把项目提交到 jcenter,其他仓库提交方式读者可自行搜索。

实战

Android 打包过程中,一个 task 接着一个 task 的执行,每个 task 都会执行一段特定的事情(例如第一篇文章中提到的几个 task),所以在 Gradle 插件的开发中,如果是针对打包流程的更改,实际上大部分都是 hook 某一个 task 来达到目的——例如我司的 mess 通过 hook transformClass

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值