ARouter 迁移到 TheRouter 使用感受

简介: 之前项目中一直用的是 ARouter,但是一直很卡,特意用adb查了一下ARouter的初始化用了`131ms`。最近发现货拉拉开源了一套更先进的路由框架 TheRouter,还宣传能无缝切换,趁着中秋放假就赶紧拿来试了一下,真香!!

之前项目中一直用的是 ARouter,但是一直很卡,特意用adb查了一下ARouter的初始化用了131ms。最近发现货拉拉开源了一套更先进的路由框架 TheRouter,还宣传能无缝切换,趁着中秋放假就赶紧拿来试了一下,真香!!

先看一下官方介绍:TheRouter 是一个 Kotlin 编写,用于 Android 模块化开发的一整套解决方案框架。
Github 项目地址:https://github.com/HuolalaTech/hll-wp-therouter-android
官网文档:https://therouter.cn/

运行迁移工具

  1. 下载 TheRouter 官方提供的迁移工具,支持 Windows 和 Mac:工具下载看官方文档
  2. 选择当前项目的路由框架,目前迁移工具好像只支持 ARouter 迁移到 TheRouter。
  3. 选择要使用的TheRouter版本号
  4. 选择项目路径,直接选根目录就可以

1-1.png
5.开始转换。

  1. 转完以后会生成改动日志,因为 ARouterProvider 有 init 方法,但TheRouter是没有这个方法的,需要自己判断一下代码逻辑,我是直接在接口方法被调用的时候,先调一下init就行了。
  2. 日志生成以后如果没有需要手动修改的部分,就啥也不用管了。如果有的话可以选择把日志导出,放到 Sublime 里面看,比较清晰一点。

查看 git 修改记录

可以看到,TheRouter 的迁移工具还是很智能的,需要改的地方都自动改了。还可以直接把没用的ARouter方法注释掉。大家可以自己试一试,如果写了Provider 但是里面的 init 什么代码也没有,也会直接删除。

1-3.png

1-4.png

单模块自动初始化能力

并且 TheRouter 对于模块化开发的支持非常完全,按照官方文档的描述:TheRouter 是完全面向模块化开发提供的一套解决方案。在模块化开发时,可能每个模块都有自己需要初始化的一些代码。以前的做法是把这些代码都在Application里声明,但是这样可能随着业务变动每次都需要修改Application所在模块。TheRouter 的单模块自动初始化能力就是为了解决这样的情况,可以只在当前模块声明初始化方法后,将会在业务场景时自动被调用。

每个加了 @FlowTask 注解的方法,都会在编译期被解析,生成一个对应的 Task 对象,这个对象包含了初始化方法的相关信息,比如:是否异步执行、任务名、是否依赖其他任务先执行。

当所有aar都编译完成,生成好全部的 Task 以后,会在主 app 中通过Gradle插件进行聚合,在这时会将所有的 Task 做一次检查,通过构建有向无环图来防止 Task 发生循环引用的情况。

每次应用启动后,会在路由初始化时,将有向图中的全部Task,按照依赖关系按顺序加载。

这个自动初始化能力一开始我们组很多同事都说没用,结果实际用起来发现:绝对的真香。尤其是之前在做隐私合规整改的时候,很多模块的初始化代码都要改,现在用了这套自定义自动初始化实际的框架,直接代码全部内聚回自己模块,完全不存在跨模块修改代码的情况了。

有一些小坑

迁移工具整体还算不错,但是用完发现还是有一些小坑的。
ARouter 自定义拦截器没办法迁移,用完一键迁移以后,代码编译不过了,还需要手动改一下拦截器的代码改到TheRouter对应的拦截器上才行。

总结

总之用下来的感受就是——丝滑!

直接无缝从ARouter迁移到TheRouter,之前老大评估还需要三天的时间,我直接半天就搞完了,测试测了一天也是说一把过。
顺带还把之前的初始化逻辑改了一下,后面开发的时候,基本上就不用再管别人开发的模块了,我自己搞完我的事就下班,拜拜~

目录
相关文章
|
存储 Java 关系型数据库
全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
|
数据采集 JSON 数据挖掘
如何利用Python实现高效数据清洗
数据清洗是数据分析过程中不可避免的一步。在大规模数据处理任务中,手动数据清洗会耗费大量时间和资源。本文介绍了如何使用Python编写脚本来自动化数据清洗,以提高数据分析的效率。
362 3
|
XML JavaScript 数据处理
ArkTS常用数据处理:掌握核心技能与实践
本文详细介绍了ArkTS在HarmonyOS应用开发中的常用数据处理方法,涵盖基本数据类型、数组、枚举、对象和XML解析与生成等内容。通过实例讲解了这些方法在实际开发中的应用和最佳实践,帮助开发者提升应用的效率和质量。
602 1
|
存储 机器学习/深度学习 大数据
量子计算与大数据:处理海量信息的新方法
【10月更文挑战第31天】量子计算凭借其独特的量子比特和量子门技术,为大数据处理带来了革命性的变革。相比传统计算机,量子计算在计算效率、存储容量及并行处理能力上具有显著优势,能有效应对信息爆炸带来的挑战。本文探讨了量子计算如何通过量子叠加和纠缠等原理,加速数据处理过程,提升计算效率,特别是在金融、医疗和物流等领域中的具体应用案例,同时也指出了量子计算目前面临的挑战及其未来的发展方向。
|
Linux 持续交付 开发工具
版本控制系统的选择:Git vs. Mercurial
【6月更文挑战第20天】Git vs. Mercurial: 两者都是流行的DVCS,Git由Linus Torvalds创建,以其速度和复杂分支管理著称,适合大型项目和有经验的开发者。Mercurial,由Matt Mackall开发,以其简洁命令行和易用性吸引初学者。Git社区更大,扩展更丰富,而Mercurial在某些场景下可能更直观。选择取决于项目需求、团队经验和偏好。
|
UED 开发者
鸿蒙next版开发:ArkTS组件通用属性(边框设置)
在HarmonyOS 5.0中,ArkTS提供了丰富的边框设置属性,允许开发者自定义组件的边框样式,提升应用的视觉效果和用户体验。本文详细解读了border属性的使用方法,并提供了示例代码,展示了如何设置不同边的边框宽度、颜色、圆角和样式。边框设置在UI开发中具有重要作用,如区分组件、强调重要元素和美化界面。
1158 6
|
中间件 数据挖掘 API
ERP系统的系统集成与接口管理:实现高效协同
【7月更文挑战第29天】 ERP系统的系统集成与接口管理:实现高效协同
1166 0
|
开发工具 iOS开发
阿里云本机一键登录集成
阿里云本机一键登录集成
589 0
|
存储 小程序 程序员
嵌入式C语言基本操作方法之经典
嵌入式C语言基本操作方法之经典
309 0
|
API 芯片
STM32 使用HAL库调试内部RTC经验总结
STM32 使用HAL库调试内部RTC经验总结
1081 1