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

目录
相关文章
|
移动开发 ARouter 开发工具
开源最佳实践:Android平台页面路由框架ARouter
为了更好地让开发者们更加深入了解阿里开源,阿里云云栖社区在3月1号了举办“阿里开源项目最佳实践”在线技术峰会,直播讲述了当前阿里新兴和经典开源项目实战经验以及背后的开发思路,在本次在线技术峰会上,阿里云资深开发工程师刘志龙分享了Android平台页面路由框架ARouter的技术方案、解决的问题以及在实际场景中的最佳实践。
47385 2
|
4月前
|
安全 数据处理 开发者
Flutter相关痛点解决问题之iBox模块的源码结构的设计如何解决
Flutter相关痛点解决问题之iBox模块的源码结构的设计如何解决
|
4月前
|
数据处理 开发工具 Android开发
Android项目架构设计问题之Android项目的主要关注点如何解决
Android项目架构设计问题之Android项目的主要关注点如何解决
28 1
|
4月前
|
Java Android开发 开发者
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
78 0
|
4月前
|
Android开发
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
43 0
|
5月前
|
运维 自然语言处理 监控
软件研发核心问题之在需求拆解过程中,“需要多少UI”的问题如何解决
软件研发核心问题之在需求拆解过程中,“需要多少UI”的问题如何解决
|
7月前
|
API Nacos
【想进大厂还不会阅读源码】ShenYu源码-重构同步数据服务
ShenYu源码阅读📚。我们看下PR的标题和Concersation的头一句,大概意思就是重构注册中心数据同步到ShenYu网关的方式。大家看看重构了有没好处呢?不仅获得了知识,还获得了一次开源贡献,何乐而不为呢
|
前端开发
前端学习笔记202305学习笔记第二十三天-重构和代码迁移1
前端学习笔记202305学习笔记第二十三天-重构和代码迁移1
51 0
|
Java Android开发
移动应用程序设计基础——Android环境构建与Activity生命周期
安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。 5、 完成智能手机开发平台安装、以及相关配置; 6、 并实现Hello World; 7、 添加Log日志,通过Log日志验证Ac 1、 安装JAVA JDK 2、 安装Android Studio,熟悉AS的基本操作,改变AS的字体,显示方式;截图和文字说明。 3、 建立新项目,实现Hello World。说明各个文件的作用,以及各个关键语句的作用或含义,给出程序的运行结果。 4、 设置生命周期的Log日志,分别执行相关操作
315 0
移动应用程序设计基础——Android环境构建与Activity生命周期
|
安全 Android开发 Kotlin
viewBinding的使用记一次重构项目的过程
最近放寒假了,终于有空做项目了,想着把之前的一些项目重构一下,碰巧重构到 view Binding 这块,之前都是用 kotlin 的那个扩展,其实刚开始做项目的时候这个就已经废弃了,由于当时自己有点懒,没去学习这个新的代替方案,所以就成为一个历史遗留的问题,参考官方文档
186 0