【移动应用开发技术】阿里路由框架ARouter 源码解析之Compiler_第1页
【移动应用开发技术】阿里路由框架ARouter 源码解析之Compiler_第2页
【移动应用开发技术】阿里路由框架ARouter 源码解析之Compiler_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】阿里路由框架ARouter源码解析之Compiler

前段时间,公司项目在做组件化重构,过程中当然会有很多痛点。组件化最重要的是根据项目和业务进行分模块,至于模块的粒度就看大家自己来把控了!这里要说的就是模块之间的数据传输问题组件化之后,各个模块不相互依赖,那么怎么相互跳转和传递数据呢?答案就是通过隐式Intent的方式来跳转和传递数据。以往的显示Intent跳转,会存在类直接依赖的问题,这样会导致耦合性非常严重;相比而言,隐式Intent则不需要类之间的直接依赖,但是会出现规则集中式管理,扩展性比较差。所以在调研期间就发现阿里开源了ARouter–路由框架。ARouter的好处我这里就不多说,大家可以去看官方文档或者去github上看README。【/alibaba/ARouter】接下来会分为若干篇blog来分析一下ARouter的源码!看了ARouter的源码就会发现,它提供了两个SDK,一个是API,一个Compiler。这里先说说Compiler层SDK。RouteProcessor路由路径处理器InterceptorProcessor拦截器处理器AutowireProcessor自动装配处理器注解处理器的处理流程(图片转自网络)实际上,CompilerSDK只是处根据扫描到的注解生成相应的映射(java)文件。最后一步通过固定包名加载映射文件是由APISDK来做的。以官方demo为例来说:上图所示就是ARouter在编译期间生成的类文件。arouter-compiler的目录结构如下:下面分别说说这三种注解处理器:用过编译时注解的朋友们都知道,注解处理器需要继承AbstractProcessor,主要涉及的函数有init(),process()这两个。RouteProcessor类的继承信息:initinit()在使用ARouter注解的时候,按照官方文档是需要在每个module里面的build.gradle中配置如下信息:配置这个属性的目的,就是为了在编译期间生成相关module下的文件和存储文件名称。process()一般在process()函数中做的操作如下:parseRoutes()这个函数的代码有点长,大家耐心看!categories()下面来看一下怎么讲路由进行分组的routeVerify()通过上面的分析可以得到以下几点:配置Route注解时,路径不允许为空且必须以“/”开头RouteProcessor注解处理器生成的文件由三种:1.ARouter$$Group$$xxx(可能有多个)

2.ARouter$$Providers$$xxx(只有一个)

3.ARouter$$Root$$xxx(只有一个)InterceptorProcessorinit()process()parseInterceptors()verify()通过上面的分析可以得到以下几点:不能设置相同优先级的拦截器,否则会抛出异常InterceptorProcessor生成的类文件格式为:ARouter$$Interceptors$$xxxAutowiredProcessorinit()process()categoriesgenerateHelper

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论