阿里路由框架ARouter源码解析之Compiler-创新互联

前段时间,公司项目在做组件化重构,过程中当然会有很多痛点。

创新互联公司于2013年创立,先为云安等服务建站,云安等地企业,进行企业商务咨询服务。为云安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

组件化最重要的是根据项目和业务进行分模块,至于模块的粒度就看大家自己来把控了!

这里要说的就是模块之间的数据传输问题

组件化之后,各个模块不相互依赖,那么怎么相互跳转和传递数据呢?

答案就是通过隐式Intent 的方式来跳转和传递数据。

以往的显示Intent 跳转,会存在类直接依赖的问题,这样会导致耦合性非常严重;相比而言,隐式Intent则不需要类之间的直接依赖,但是会出现规则集中式管理,扩展性比较差。

所以在调研期间就发现阿里开源了ARouter–路由框架。

ARouter的好处我这里就不多说,大家可以去看官方文档或者去github上看README。

【https://github.com/alibaba/ARouter】

接下来会分为若干篇blog来分析一下ARouter的源码!

看了ARouter的源码就会发现,它提供了两个SDK,一个是API,一个Compiler。

  • Compiler SDK 是用于编译器生成相关类文件的。
  • API SDK 是用在运行期间路由跳转等作用的。

这里先说说Compiler层SDK。

RouteProcessor 路由路径处理器

InterceptorProcessor 拦截器处理器

AutowireProcessor 自动装配处理器

注解处理器的处理流程

(图片转自网络)

实际上,Compiler SDK 只是处根据扫描到的注解生成相应的映射(java)文件。

最后一步通过固定包名加载映射文件是由API SDK来做的。

以官方demo为例来说:

上图所示就是ARouter在编译期间生成的类文件。

  • 红色标注的是 RouteProcessor 生成的类文件
  • 蓝色标注的是 InterceptorProcessor 生成的类文件
  • 橙色标书的是 AutowiredProcessor 生成的类文件

arouter-compiler的目录结构如下:

  • processor包下面是注解处理器
  • utils包下面是相关工具类

下面分别说说这三种注解处理器:

用过编译时注解的朋友们都知道,注解处理器需要继承AbstractProcessor ,主要涉及的函数有 init(),process() 这两个。

RouteProcessor

类的继承信息:

@AutoService(Processor.class)
@SupportedOptions(KEY_MODULE_NAME)
@SupportedSourceVersion(SourceVersion.RELEASE_7)
@SupportedAnnotationTypes({ANNOTATION_TYPE_ROUTE, ANNOTATION_TYPE_AUTOWIRED})
public class RouteProcessor extends AbstractProcessor {

文章标题:阿里路由框架ARouter源码解析之Compiler-创新互联
文章网址:http://azwzsj.com/article/hijcj.html