ARouter 遷移到 TheRouter 使用感受

之前項目中一直用的是 ARouter,但是啟動耗時問題一直沒辦法解決。最近發(fā)現(xiàn)貨拉拉開源了一套更先進的路由框架 TheRouter,還宣傳能無縫切換,就趕緊拿來試了一下,真香??!

先看一下官方介紹:TheRouter 是一個 Kotlin 編寫,用于 Android 模塊化開發(fā)的一整套解決方案框架。
Github 項目地址:https://github.com/HuolalaTech/hll-wp-therouter-android、
官網(wǎng)文檔:https://therouter.cn/

仔細看了一下作者,還是濤哥寫的。我算是濤哥博客的老讀者了,之前就用過濤哥寫的 TheMVPKJFrameForAndroid 原來是去了貨拉拉。

運行遷移工具

  1. 下載 TheRouter 官方提供的遷移工具,支持 Windows 和 Mac:工具下載看官方文檔
  2. 選擇當前項目的路由框架,目前遷移工具好像只支持 ARouter 遷移到 TheRouter。
  3. 選擇要使用的TheRouter版本號
  4. 選擇項目路徑,直接選根目錄就可以
1-1.png

5.開始轉(zhuǎn)換。

  1. 轉(zhuǎn)完以后會生成改動日志,因為 ARouterProvider 有 init 方法,但TheRouter是沒有這個方法的,需要自己判斷一下代碼邏輯,我是直接在接口方法被調(diào)用的時候,先調(diào)一下init就行了。
  2. 日志生成以后如果沒有需要手動修改的部分,就啥也不用管了。如果有的話可以選擇把日志導(dǎo)出,放到 Sublime 里面看,比較清晰一點。

查看 git 修改記錄

可以看到,TheRouter 的遷移工具還是很智能的,需要改的地方都自動改了。還可以直接把沒用的ARouter方法注釋掉。大家可以自己試一試,如果寫了Provider 但是里面的 init 什么代碼也沒有,也會直接刪除。

1-3.png
1-4.png

單模塊自動初始化能力

并且 TheRouter 對于模塊化開發(fā)的支持非常完全,按照官方文檔的描述:TheRouter 是完全面向模塊化開發(fā)提供的一套解決方案。在模塊化開發(fā)時,可能每個模塊都有自己需要初始化的一些代碼。以前的做法是把這些代碼都在Application里聲明,但是這樣可能隨著業(yè)務(wù)變動每次都需要修改Application所在模塊。TheRouter 的單模塊自動初始化能力就是為了解決這樣的情況,可以只在當前模塊聲明初始化方法后,將會在業(yè)務(wù)場景時自動被調(diào)用。

每個加了 @FlowTask 注解的方法,都會在編譯期被解析,生成一個對應(yīng)的 Task 對象,這個對象包含了初始化方法的相關(guān)信息,比如:是否異步執(zhí)行、任務(wù)名、是否依賴其他任務(wù)先執(zhí)行。

當所有aar都編譯完成,生成好全部的 Task 以后,會在主 app 中通過Gradle插件進行聚合,在這時會將所有的 Task 做一次檢查,通過構(gòu)建有向無環(huán)圖來防止 Task 發(fā)生循環(huán)引用的情況。

每次應(yīng)用啟動后,會在路由初始化時,將有向圖中的全部Task,按照依賴關(guān)系按順序加載。

這個自動初始化能力一開始我們組很多同事都說沒用,結(jié)果實際用起來發(fā)現(xiàn):絕對的真香。尤其是之前在做隱私合規(guī)整改的時候,很多模塊的初始化代碼都要改,現(xiàn)在用了這套自定義自動初始化實際的框架,直接代碼全部內(nèi)聚回自己模塊,完全不存在跨模塊修改代碼的情況了。

有一些小坑

遷移工具整體還算不錯,但是用完發(fā)現(xiàn)還是有一些小坑的。
ARouter 自定義攔截器沒辦法遷移,用完一鍵遷移以后,代碼編譯不過了,還需要手動改一下攔截器的代碼改到TheRouter對應(yīng)的攔截器上才行。

總結(jié)

總之用下來的感受就是——絲滑!

直接無縫從ARouter遷移到TheRouter,之前老大評估還需要三天的時間,我直接半天就搞完了,測試測了一天也是說一把過。
順帶還把之前的初始化邏輯改了一下,后面開發(fā)的時候,基本上就不用再管別人開發(fā)的模塊了,我自己搞完我的事就下班,拜拜~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容