# ModularityDemo **Repository Path**: xj740640431/modularity-demo ## Basic Information - **Project Name**: ModularityDemo - **Description**: No description available - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-24 - **Last Updated**: 2023-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README app:主模块 child-module:子模块 mrouter-annotation:注解相关,java类型的library mrouter-api:路由相关api:MRouter.init(),MRouter.start()等 mrouter-compiler:注解处理器,使用google auto-service 注解处理器获取注解相关信息, 使用squareup:javapoet 根据注解信息生成存储映射关系的类 kotlin-reflect、kotlin-stdlib是反射相关的包,方便开发 流程: 1、编译时执行MRouterProcessor注解处理器,找到所有使用Route注解的类,反射获取注解的路由地址、类名等 2、需要再各个模块配置MODULE_NAME,注解处理器根据MODULE_NAME生成不同的映射关系类 继承IRouteRegister,存放到指定包下 原因是如果所有的类名相同,打包时会覆盖,丢失其他模块的映射关系 3、app启动,查找指定包下的所有映射关系类,通过Class.newInstance()创建实例,直接强转成IRouteRegister接口类型, 调用loadRoute方法把映射关系添加到MRouter.routes这种统一管理 获取到所有的映射关系后就简单了,根据路由找到class跳转就好了