文章目录
一、组件间共享的服务
二、注解处理器添加对上述 " 组件间共享的服务 " 的支持
三、注解处理器 生成代码规则
四、完整注解处理器代码 及 生成的 Java 代码
1、注解处理器代码
2、app 模块中的注解类生成的 Java 源码
3、library2 模块中的注解类生成的 Java 源码
五、博客资源
组件化系列博客 :
【Android 组件化】从模块化到组件化
【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 )
【Android 组件化】使用 Gradle 实现组件化 ( 组件模式与集成模式切换 )
【Android 组件化】使用 Gradle 实现组件化 ( 组件 / 集成模式下的 Library Module 开发 )
【Android 组件化】路由组件 ( 路由组件结构 )
【Android 组件化】路由组件 ( 注解处理器获取被注解的节点 )
【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet 生成代码 )
【Android 组件化】路由组件 ( 注解处理器参数选项设置 )
【Android 组件化】路由组件 ( 构造路由表中的路由信息 )
【Android 组件化】路由组件 ( 使用 JavaPoet 生成路由表类 )
一、组件间共享的服务
路由除了支持 Activity 之外 , 还要支持 组件间共享的服务 如 工具类 , 逻辑功能 等 ;
注意 : 这里的 " 组件间共享的服务 " 不是 4 44 大组件中的 Service 组件 , 是 任意的 , 实现了 IService 接口的 Java 类 , 可以是工具类 , 业务逻辑 , 等等 ;
定义空的接口 IService , 令 需要共享的服务类 实现接口 , 该接口没有实际的意义 , 仅用于标记该接口需要纳入路由组件管理 , 起标记作用 ;
package kim.hsl.route_core.template;
/** * 需要跨组件通信的服务需要实现该接口 * 用于标记服务 */ public interface IService { }
接口定义位置 :
跨组件调用时 , 需要暴露出一个接口 , 接口必须实现上述 IService 接口 , 用于作为标识 , 注解处理器中 , 通过判断该注解节点的类型是不是该接口的子类 , 如果是则生成 路由信息 , 加入到 路由表 中 ;
IService 接口仅用与 标识 服务是否在 组件间共享 ;
针对每个具体的服务 , 还要在 底层依赖库 中定义一系列的接口 , 这里的底层依赖库是所有的 Module 组件都要依赖的 Android Library Module 依赖库 ;
在其中定义一个接口 ComponentService , 继承 IService 接口 , 在该接口中定义一系列需要暴露的方法 ;
package kim.hsl.base; import kim.hsl.route_core.template.IService; /** * 暴露一个接口 */ public interface ComponentService extends IService { void doSomething(); }
该接口定义位置 : 所有的组件都依赖 base 依赖库 ;