Arouter 框架是主要由三个模块组成,annotation,compiler,core.
annotation :自定义注解,用来声明需要路由的页面(Java Library)
compiler :注解解析,在编译时根据自定义注解生成注册路由表的java类(Java Library)。
core : 实现路由跳转功能,供Android调用(Android Library)
先上工程结构图
一、annotation模块
新建一个文件,编写一个注解,声明路由路径
RouteMeta保存路由信息,通过解析注解获取。
二、compiler模块
首先导入依赖的第三方库,compiler模块使用javax的Processor类来解析注解,auto-service自动编译Processor类,使用javapoet库生成java类。
新建RouterProcessor继承AbstractProcessor类,添加如下注解
初始化RouterProcessor,在process方法中遍历Route注解的节点,如果不为null,进行解析
获取Activity类的节点信息,然后循环,判断是Activity类型的节点,新建RouteMeta对象保存节点信息。然后调用categories()验证节点的路由地址是否符合规则,再根据分组名保存节点到groupMap中
遍历groupMap中的节点信息,使用javapoet工具生成一个继承IRouteGroup接口的java类,用来保存每个分组的路由信息。叫分组信息类。