方案一:类似databinding的实现
获取所有project
获取依赖包名
判断目标类是否存在
收集所有可用的包名
最后生成当前model中的文件
其中:
ProcessDataBinding 负责读取Br文件下下面的文件并收集文件,包名信息
TaskManager 中 会创建各个项目的br文件,并将model中的br文件copy到app目录下
疑问:
如何在当前model中筛选出使用了databind的aar??
如何判断aar中有没有databinding信息的??
缺点:
1:在每个架包中生成文件,文件一旦被删除就无法确定该架包是不是真的含有我们生成的文件
2:生成文件依赖注解但是如果没有注解的话,编译工具就会报错,怎么解决?
方案二:遍历class文件
遍历所有class文件,通过查看类文件中的父类信息判断继承关系
缺点:
主线程只能5s,性能方面的影响?
Reflections reflections = new Reflections("com.projectname");
Set<Class<? extends IParent>> subTypes = reflections.getSubTypesOf(IParent.class);