TheRouter —— Android 模块化开发解决方案框架
TheRouter 是一个 Kotlin 编写,由货拉拉技术开源的,用于 Android 模块化开发的一整套解决方案框架。支持KSP、支持AGP8,不仅能对常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。
Github 项目地址与使用文档详见 https://github.com/HuolalaTech/hll-wp-therouter-android。
为什么要使用 TheRouter
路由是现如今移动端开发中必不可少的功能,尤其是企业级APP,可以用于将Intent页面跳转的强依赖关系解耦,同时减少跨团队开发的互相依赖问题。
对于大型 APP 开发,基本都会选用模块化(或组件化)方式开发,对于模块间解耦要求更高。
TheRouter 是一整套完全面向模块化开发的解决方案,不仅能支持常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。例如:完美解决了模块化开发后由于组件内无法获取 Application 生命周期与业务流程,造成每次初始化与关联依赖调用都需要跨模块修改代码的问题。
TheRouter 核心功能具备如下能力:
Navigator:
- 支持
Activity
和Fragment
- 支持
Path
与页面多对一关系或一对一关系,可用于解决多端path统一问题 - 页面
Path
支持正则表达式声明 - 支持
json
格式路由表导出 - 支持动态下发
json
路由表,降级任意页面为H5 - 支持任意
object
跨模块传递(无需序列化,且能保证对象类型) - 支持页面跳转拦截处理
- 支持自定义页面参数解析方式(例如将
json
解析为对象) - 支持使用路由跳转到第三方 SDK 中的
Activity
(Fragment
)
ServiceProvider:
- 支持跨模块依赖注入
- 支持自定义注入项的创建规则,依赖注入可自定义参数
- 支持自定义服务拦截,单模块
mock
调试 - 支持注入对象缓存,多次注入 只会new一次对象
FlowTaskExecutor:
- 支持单模块独立初始化
- 支持懒加载初始化
- 独立初始化允许多任务依赖(参考
Gradle Task
) - 支持编译期循环引用检测
- 支持自定义业务初始化时机,可以用于解决隐私合规问题
ActionManager:
- 支持全局回调配置
- 支持优先级响应与中断响应
- 支持记录调用路径,解决调试期观察者模式无法追踪
Observable
的问题
与其他路由对比
功能 | TheRouter | ARouter | WMRouter |
---|---|---|---|
Fragment路由 | ✔️ | ✔️ | ✔️ |
依赖注入 | ✔️ | ✔️ | ✔️ |
加载路由表 | 无运行时扫描 无反射 | 运行时扫描dex(新版本改为反射) 反射实例类 性能损耗大 | 运行时读文件 反射实例类 性能损耗中 |
注解正则表达式 | ✔️ | ✖️ | ✔️ |
Activity指定拦截器 | ✔️(四大拦截器可根据业务定制) | ✖️ | ✔️ |
导出路由文档 | ✔️(路由文档支持添加注释描述) | ✔️ | ✖️ |
动态注册路由信息 | ✔️ | ✔️ | ✖️ |
支持 APT/KAPT 增量编译 | ✔️ | ✔️(开启文档生成则无法增量编译) | ✖️ |
支持 KSP 编译 | ✔️ | ✖️ | ✖️ |
支持 AGP8 | ✔️ | Gradle 7.3 以后无法使用 | Gradle 7.3 以后无法使用 |
plugin支持增量编译 | ✔️ | ✖️ | ✖️ |
多 Path 对应同一页面(低成本实现双端path统一) | ✔️ | ✖️ | ✖️ |
远端路由表下发 | ✔️ | ✖️ | ✖️ |
支持单模块独立初始化 | ✔️ | ✖️ | ✖️ |
支持使用路由打开第三方 SDK 页面 | ✔️ | ✖️ | ✖️ |
对热修复支持(例如tinker) | ✔️(未改变的代码多次构建无变动) | ✖️(多次构建apt产物会发生变化,生成无意义补丁) | ✖️(多次构建apt产物会发生变化,生成无意义补丁) |

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 百万并发场景中倒排索引与位图计算的实践
作者:京东物流 郎元辉 背景 Promise时效控单系统作为时效域的控制系统,在用户下单前、下单后等多个节点均提供服务,是用户下单黄金链路上的重要节点;控单系统主要逻辑是针对用户请求从规则库中找出符合条件的最优规则,并将该规则的时效控制结果返回客户端,比如因为临时疫情等原因针对仓、配、商家、客户四级地址等不同维度进行精细粒度的时效控制。 该系统也是Promise侧并发量最大的系统,双11高峰集群流量TPS在百万级别,对系统的性能要求非常高,SLA要求在5ms以内,因此对海量请求在规则库(几十万)中如何快速正确匹配规则是该系统的技术挑战点。 朴素的解决方案 按照朴素的思想,在工程建设上,通过异步方式将规则库逐行缓存到Redis,Key为规则条件,Value为规则对应结果;当用户请求过来时,对请求Request(a,b,c,d..)中的参数做全组合,根据全组合出的Key尝试找出所有可能命中的规则,再从中筛选出最优的规则。如下图所示 该方案面临的问题是全组合的时间复杂度是2**n,n≈12;算法的时间复杂度高且算法稳定性差,最差情况一次请求需要4096次计算和读取操作。当然在工程上我们...
- 下一篇
英特尔已停止开发开源其 HAXM 硬件辅助虚拟化引擎
多年来,英特尔一直在开发其HAXM硬件辅助虚拟化引擎,并将其用于 Android 模拟器、 QEMU 以及支持英特尔 VT 的处理器。HAXM 不仅适用于 Linux,还适用于 Windows、macOS 和一些 BSD 系统。 事实证明,HAXM 特别适用于 Intel 系统上的 Android 软件开发,尤其是在可用管理程序选项较少的 Windows 上。然而不幸的是,英特尔已决定停止 HAXM 的开发。此外,他们还注意到 HAXM 的代码存在安全问题,建议用户停止使用该软件。 HAXM 的最新版本是 2022 年 11 月底的 HAXM 7.8,但在这次版本发布之后,其开发突然停止, GitHub 项目已经存档。英特尔工程师在本周添加了停产通知: 该项目已终止,不再由英特尔维护。 该项目已被确定为具有已知的安全逃逸。 英特尔已停止开发和贡献此项目,包括但不限于维护、错误修复、新版本或更新。 英特尔不再接受该项目的补丁。 目前英特尔没有分享更多关于停止 HAXM 开发的理由和其他信息。 关于 HAXM HAXM 是一个跨平台的硬件辅助虚拟化引擎(hypervisor),广泛用作...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果