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的技术方案、解决的问题以及在实际场景中的最佳实践。
47318 2
|
24天前
|
弹性计算 人工智能 运维
Terraform从入门到实践:快速构建你的第一张业务网络(上)
本次分享主题为《Terraform从入门到实践:快速构建你的第一张业务网络》。首先介绍如何入门和实践Terraform,随后演示如何使用Terraform快速构建业务网络。内容涵盖云上运维挑战及IaC解决方案,并重磅发布Terraform Explorer产品,旨在降低使用门槛并提升用户体验。此外,还将分享Terraform在实际生产中的最佳实践,帮助解决云上运维难题。
108 1
Terraform从入门到实践:快速构建你的第一张业务网络(上)
|
3月前
|
数据可视化 Linux Android开发
Flutter相关痛点解决问题之研发链路中的环境配置和打包集成问题如何解决
Flutter相关痛点解决问题之研发链路中的环境配置和打包集成问题如何解决
|
3月前
|
Cloud Native Java Serverless
一键上天!如何将Spring PetClinic瞬间迁移到云端函数计算平台
【8月更文挑战第8天】在现代云原生开发中,将Spring应用迁移到Serverless环境正成为趋势。本文通过对比传统部署与函数计算,指导如何快速部署Spring PetClinic应用。传统部署需手动配置服务器和中间件,而函数计算则免除了这些步骤,仅需上传代码。首先,准备好Spring PetClinic源码或jar包;接着选择函数计算平台,本文以阿里云为例;随后对应用进行适配,并使用Maven构建部署包;登录阿里云控制台上传jar包并配置HTTP触发器;最后测试应用确保正常运行。
43 3
|
3月前
|
前端开发 API 开发者
【React状态管理新思路】Context API入门:从零开始摆脱props钻孔的优雅之道,全面解析与实战案例分享!
【8月更文挑战第31天】React 的 Context API 有效解决了多级组件间状态传递的 "props 钻孔" 问题,使代码更简洁、易维护。本文通过电子商务网站登录状态管理案例,详细介绍了 Context API 的使用方法,包括创建、提供及消费 Context,以及处理多个 Context 的场景,适合各水平开发者学习与应用,提高开发效率和代码质量。
33 0
|
3月前
|
Java Android开发 开发者
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
59 0
|
6月前
|
设计模式 移动开发 安全
构建高效Android应用:探究LiveData的优势与实践
【4月更文挑战第7天】随着移动开发技术的不断演进,Android开发者面临着构建更加高效、响应式和可维护应用的挑战。在众多解决方案中,LiveData作为一种观察者模式的实现,已经成为Google推荐的数据持有架构组件。本文将深入探讨LiveData的核心优势,通过具体实例展现其在Android应用中的实现方式,并分析其如何简化UI组件与数据源之间的通信,提升应用的健壮性和可测试性。
|
6月前
|
API
Flutter状态管理终极方案GetX第一篇——路由
Flutter状态管理终极方案GetX第一篇——路由 GetX是Flutter中一个非常流行的状态管理库,它不仅提供了简单易用的状态管理功能,还可以帮助我们方便地管理路由。在这篇文章中,我们将介绍如何使用GetX来实现路由管理。
334 0
|
前端开发
前端学习笔记202305学习笔记第二十三天-重构和代码迁移1
前端学习笔记202305学习笔记第二十三天-重构和代码迁移1
42 0
|
Kubernetes Perl 容器
【k8s 系列】k8s 学习二十五,如何升级应用 ?
在之前的分享中,我们知道一个程序如何放到容器中,一个镜像如何生成 pod, pod 的创建,运行,管理,删除过程,挂载等等
106 0