如果我们看过 Android Gradle Plugin 就会看见许多 Task 的声明是抽象类,并没有具体的类实现。如果这时候,我们去跑一个 Gradle 任务,会看见类被代理,代理类的名字是原来的名字并加上一个 _Decorate
后缀。
类生成器
抽象类代理生成类是一个叫 AbstractClassGenerator 的东西,它会检查你声明的 Abstract Class 是否合法,如果合法的话就可以被 Gradle 代理,不合法的话,会报错中止流程。
下面有一系列类关于 getter 定义的相关规则
getter
的名字定义粗暴,就是 getXXX
,如果getter
是抽象方法,且返回的类型是符合条件的,且没有 setter 方法的时候,这个类就是可代理的。我们以一种约束为例:返回指定的类型。
Gradle 对于 Task 管控的类型有一个列表
这个列表记录了 Gradle 可管控的类型,只要你的方法返回的是这些类型,gradle 会使用 ObjectFactory 帮你注入这么一个对象。且在 Task 实例化之后,会对这些 Property 的 dependencies 自动注入 Task。
Property 的作用
这里考虑到,后续其他 Task 如果需要拿到这个依赖,那么就可以直接取这个 Property,里面附带上了 task 依赖信息,因此可以自动做成一个产物依赖的依赖链。
本文由 Gemini Wen 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Dec 18, 2021 at 11:45 pm