Skip to content

框架的设计

Xia Shengming edited this page Feb 17, 2019 · 3 revisions

好了,如果你看到这里,相信你对路由框架的原理都已经很清楚了。先前有读者问我了一个问题,说为什么初始化的时候不去生成路由的映射文件?在这里,我跟大家再详细说一遍:
首先,我们要明白路由框架作用的两个时期,第一个时期是编译期,第二个时期是app运行的时期。
编译期是在你的项目编译的时候,这个时候还没有开始打包,也就是你没有生成apk呢!路由框架在这个时期根据注解去扫描所有文件,然后生成路由映射文件。这些文件都会统一打包到apk里
app运行时期做的东西也不少,但总而言之都是对映射信息的处理,如执行执行路由跳转等。

框架的整体设计

路由框架相对于其他的第三方框架有点特殊,因为它还要在编译期执行操作,所以这里我按照ARouter的思想对框架进行分模块设计,看下图:



我将框架从功能角度分成了三个library,第一个是注解模块,主要放置注解,第二个是compiler模块,里面存放着注解处理器和处理注解的工具类,第三个是路由框架的核心,存放着路由的api等等。其中,easy-compiler 模块和 easy-core 模块都依赖了 easy-annotation 模块,因为它们都需要用到注解。easy-compiler 和 easy-core 没有依赖关系。
为什么我要这么设计,是因为 easy-compiler 模块的作用是通过注解处理器生成路由映射文件,这个注解处理器有些特殊,它是针对模块的,意思就是app模块如果需要用到注解处理器,你就需要在app模块依赖 easy-compiler,module1模块也需要处理注解,那么就需要module1模块也依赖 easy-compiler,也就是说注解处理器的作用域只针对本module。而 easy-core 模块是框架的核心类,只需要在base模块引入一份就可以,因为所有模块都依赖于base模块。
好了,框架的整体设计已经讲完了,在接下来的文章里,你需要边看代码便阅读,这样才能更好的理解框架的思路。