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,之前老大评估还需要三天的时间,我直接半天就搞完了,测试测了一天也是说一把过。
顺带还把之前的初始化逻辑改了一下,后面开发的时候,基本上就不用再管别人开发的模块了,我自己搞完我的事就下班,拜拜~

目录
相关文章
|
数据采集 JSON 数据挖掘
如何利用Python实现高效数据清洗
数据清洗是数据分析过程中不可避免的一步。在大规模数据处理任务中,手动数据清洗会耗费大量时间和资源。本文介绍了如何使用Python编写脚本来自动化数据清洗,以提高数据分析的效率。
475 3
|
4月前
|
运维 监控 安全
拆解大厂标准测试流程:从需求到上线的全链路质量守护指南
大厂标准测试流程的核心是“全链路质量管控”,从需求阶段开始,通过标准化的流程、规范化的文档、高效的工具链,确保产品质量在每个环节都得到有效保障。其底层逻辑是“预防为主、早期发现、快速闭环”,通过单元测试、接口测试等早期测试手段,减少后期缺陷修复成本;通过严格的缺陷管理和回归测试,确保缺陷闭环且不引入新问题;通过上线前的多轮验证和上线后的实时监控,降低上线风险。
641 2
|
Linux 持续交付 开发工具
版本控制系统的选择:Git vs. Mercurial
【6月更文挑战第20天】Git vs. Mercurial: 两者都是流行的DVCS,Git由Linus Torvalds创建,以其速度和复杂分支管理著称,适合大型项目和有经验的开发者。Mercurial,由Matt Mackall开发,以其简洁命令行和易用性吸引初学者。Git社区更大,扩展更丰富,而Mercurial在某些场景下可能更直观。选择取决于项目需求、团队经验和偏好。
[simulink] --- simulink信号
[simulink] --- simulink信号
640 0
|
存储 编解码 监控
一文详解|如何写出优雅的代码
和大家一起探讨一下优雅代码
121138 20
一文详解|如何写出优雅的代码
解释一下什么是VIF。
解释一下什么是VIF。
2143 0
|
存储 小程序 程序员
嵌入式C语言基本操作方法之经典
嵌入式C语言基本操作方法之经典
447 0
|
API 芯片
STM32 使用HAL库调试内部RTC经验总结
STM32 使用HAL库调试内部RTC经验总结
1403 1
|
开发工具 git Windows
小工具随手记:Windows下安装Git并clone一个项目
小工具随手记:Windows下安装Git并clone一个项目
小工具随手记:Windows下安装Git并clone一个项目
|
存储 JavaScript 前端开发
springsecurity+vue解决跨域以及session问题
springsecurity+vue解决跨域以及session问题
535 0