Navigator:
ServiceProvider:
FlowTaskExecutor:
ActionManager:
TheRouter 是由货拉拉技术开源的,可同时用于 Android/iOS 模块化开发的一整套解决方案框架。具有高动态性、远端下发,双端一致性等优势,不仅能对常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。
路由是现如今移动端开发中必不可少的功能,尤其是企业级APP,可以用于将Intent页面跳转的强依赖关系解耦,同时减少跨团队开发的互相依赖问题。
对于大型 APP 开发,基本都会选用模块化(或组件化)方式开发,对于模块间解耦要求更高。
TheRouter 是一整套完全面向模块化开发的解决方案,支持Android、iOS,不仅能对常规的模块依赖解耦,页面跳转,动态下发,远端执行,同时提供了模块化过程中常见问题的解决办法。完美解决了模块化开发后由于组件内无法获取外部模块生命周期与业务流程,造成每次初始化与关联依赖调用都需要跨模块修改代码的问题。
功能 | TheRouter | ARouter | WMRouter |
---|---|---|---|
依赖注入 | ✔️ | ✔️ | ✔️ |
加载路由表 | 无运行时扫描 无反射 |
运行时扫描dex(新版本改为反射) 反射实例类 性能损耗大 |
运行时读文件 反射实例类 性能损耗中 |
注解正则表达式 | ✔️ | ✖️ | ✔️ |
Activity指定拦截器 | ✔️(四大拦截器可根据业务定制) | ✖️ | ✔️ |
路由文档 | ✔️(路由文档支持添加注释描述) | ✔️ | ✖️ |
动态注册路由表 | ✔️ | ✔️ | ✖️ |
支持 APT/KAPT 增量编译 | ✔️ | ✔️(开启文档生成则无法增量编译) | ✖️ |
支持 KSP 编译 | ✔️ | ✖️ | ✖️ |
支持 AGP8 | ✔️ | Gradle 7.x 以后无法使用 | Gradle 7.x 以后无法使用 |
plugin支持增量编译 | ✔️ | ✖️ | ✖️ |
多 Path 对应同一页面(低成本实现双端path统一) | ✔️ | ✖️ | ✖️ |
远端路由表下发 | ✔️ | ✖️ | ✖️ |
支持单模块独立初始化 | ✔️ | ✖️ | ✖️ |
支持使用路由打开第三方 SDK 页面 | ✔️ | ✖️ | ✖️ |
对热修复支持(例如tinker) | ✔️(未改变的代码多次构建无变动) | ✖️(多次构建apt产物会发生变化,生成无意义补丁) | ✖️(多次构建apt产物会发生变化,生成无意义补丁) |