type
status
date
slug
summary
tags
category
password
icon
本质
把逻辑独⽴的代码抽取和封装
Plugin 的最基本写法
写在 build.gradle ⾥:
build.gradle:
Extension
build.gradle:
写在 buildSrc ⽬录下
- ⽬录结构:
resources/META-INF/gradle-plugins/*.properties
中的 * 是插件的名称,例如*.properties
是com.hencoder.plugindemo.properties
,最终在应⽤插件是的代码就应该是:
- .properties 中只有⼀⾏,格式是: 其中等号右边指定了 Plugin 具体是哪个类
- Plugin 和 Extension 写法和在
build.gradle
⾥的写法⼀样
- 关于 buildSrc ⽬录
- 这是 gradle 的⼀个特殊⽬录,这个⽬录的 build.gradle 会⾃动被执⾏,即使不配置进 settings.gradle。(实际上在 gradle 的 6.0 之后,
buildSrc
已经成为了⼀个保留字,你在settings.gradle
⾥配置的项⽬已经不允许叫buildSrc
) - buildSrc 所配置出来的 Plugin 会被⾃动添加到编译过程中的每⼀个 project 的 classpath,因此它们才可以直接使⽤
apply plugin: 'xxx'
的⽅式来便捷应⽤这些 plugin
Transform
- 是什么:是由 Android 提供了,在项⽬构建过程中把编译后的⽂件(jar ⽂件和 class ⽂件)添加⾃定义的中间处理过程的⼯具
- 怎么写
- 先加上依赖:
- 然后继承
com.android.build.api.transform.Transform
,创建⼀个⼦类: - 注册这个 Transform
- 还能做什么:修改字节码 上⾯的这段代码只是把编译完的内容原封不动搬运到⽬标位置,没有实际⽤处。要修改字节码,需要引⼊其他⼯具,例如 javassist。 javassist 的使⽤教程在⽹上有很多,可以搜索⼀下。
- 作者:shuouyang
- 链接:https://notion-tree.vercel.app/article/440dfbf1-19f3-4a47-9948-9db190a85155
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。