yangchong211 / YCAppTool

🔥🔥🔥 组件化综合案例,组件分层为:基础公共组件,功能组件,业务组件,主工程。每一层组件的建设,很详细的工程案例,很全面的一个组件化实践案例。一个超级综合案例!
3.18k stars 748 forks source link

关于解决【4.6 存在待解决问题】的建议 #12

Open luckybilly opened 5 years ago

luckybilly commented 5 years ago

@yangchong211 你好,我是开源库CC的作者,也是组件化技术的爱好者,今天(19.02.21)在掘金上从你的文章ARouter路由解析中进入到你的github主页,从而发现了这个项目,在阅读README的过程中看到4.6 存在待解决问题提出的问题,正好可以提供点建议,所以冒昧前来交流一下:

第一个建议是:开始使用arouter-register插件

由于本项目的组件化引擎是ARouter,从1.3.1版本开始使用了我PR的自动注册插件arouter-register替代dex扫描来完成路由表的跨module注册以提高初始化性能并解决apk加固的兼容性问题。不过貌似本项目目前并未使用arouter-reigister插件

第二个建议是:用AutoRegister插件代替arouter-register插件来解决问题

arouter-register插件是在AutoRegister插件的基础上ARouter定制的简化版本,只完成了路由表相关的3个接口实现类的自动注册,其好处是不需要用户手动配置扫描规则 AutoRegister插件是一个与具体业务无关的功能性框架,根据配置的规则,使用ASM来扫描字节码并生成注册代码。 所以,我们可以为AutoRegister插件配置ARouter的扫描需求,并额外通过增加配置来完成【4.6 存在待解决问题】中的需求,具体配置方法见AutoRegister文档

也可以参考这篇文章来配置,还需要仿照ARouter里LogisticsCenter的写法,在MyApplication中提供2个生成自动注册代码所需要的方法

以上,即可实现【4.6 存在待解决问题】中的需求

很高兴在你的文章里关于跨进程解决思路相关描述中提到了CC,CC在2.0版本之前确实使用的是BroadcastReceiver + Service + LocalSocket的方案来实现跨app组件调用。

2018年9月份CC进入了2.0时代,重构了跨进程通信机制和自动注册插件,新版本框架底层使用了ContentProvider + AIDL来实现跨进程(包括App内部可跨App)的组件调用

欢迎前来围观: https://github.com/luckybilly/CC

另外,由于CC是基于组件调用而非路由跳转来实现组件之间通信的,不需要繁琐的onActivityResult,也就能避免README中4.7 组件化中Fragment通信难点这个章节中提到的Fragment回调问题

以上!

yangchong211 commented 5 years ago

好的,非常感谢你的建议!