欢迎转载,转载请标明出处.
英文原文文档地址: Litho-doc
架构
代码生成器
正如在编写Conponent中写道的,Litho依赖代码生成器来从ComponentSpec生成Component.这个过程需要用到一个不可变的java对象——SpecModel,作为中间件。
代码生成过程分为三个步骤:
- 从ComponentSpec中生成一个SpecModel。
- 验证SpecModel的合法性
- 从SpecModel中生成Component。
创建SpecModel
SpecModel是在编译时,由注解处理器(一个扫描和处理注解的javac工具)生成的.Litho的注解处理器将会扫描你的ComponentSpec中的方法,变量和注释,为每一个ComponentSpec创建SpecModel.
未来,我们将会支持使用其他方法创建SpecModel.举个例子:我们考虑支持直接在Android Studio/Intellij中创建SpecModel,这样可以允许我们不用build源码就可以生成Component.
SpecModel验证
SpecModel有一个方法叫做validate(),它返回一个包含SpecModelValidationError(SpecModel验证错误)的list.如果这个list为空,说明这个Spec是格式合法的,可以用它来创建一个合法的component.如果不是,这个list则会包含一系列需要在Component生成前修复的错误.
Component生成
如果SpecModel验证步骤成功了,接着generate方法将会被调用,它将会生成一个Javapoet TypeSpec(用它能够很容易的创建一个Component的class 文件).
给你的工程设置代码生成器
如果你根据准备工作中的说明设置了你的工程代码,那么代码生成器就被自动设置好了。