之前項目中一直用的是 ARouter损拢,但是啟動耗時問題一直沒辦法解決行冰。最近發(fā)現(xiàn)貨拉拉開源了一套更先進的路由框架 TheRouter,還宣傳能無縫切換奏属,就趕緊拿來試了一下跨跨,真香!囱皿!
先看一下官方介紹:TheRouter
是一個 Kotlin 編寫勇婴,用于 Android 模塊化開發(fā)的一整套解決方案框架。
Github 項目地址:https://github.com/HuolalaTech/hll-wp-therouter-android嘱腥、
官網(wǎng)文檔:https://therouter.cn/
仔細看了一下作者耕渴,還是濤哥寫的。我算是濤哥博客的老讀者了齿兔,之前就用過濤哥寫的 TheMVP 跟 KJFrameForAndroid 原來是去了貨拉拉橱脸。
運行遷移工具
- 下載
TheRouter
官方提供的遷移工具础米,支持 Windows 和 Mac:工具下載看官方文檔 - 選擇當(dāng)前項目的路由框架,目前遷移工具好像只支持 ARouter 遷移到 TheRouter添诉。
- 選擇要使用的
TheRouter
版本號 - 選擇項目路徑屁桑,直接選根目錄就可以
5.開始轉(zhuǎn)換。
- 轉(zhuǎn)完以后會生成改動日志栏赴,因為
ARouter
的Provider
有 init 方法蘑斧,但TheRouter
是沒有這個方法的,需要自己判斷一下代碼邏輯须眷,我是直接在接口方法被調(diào)用的時候竖瘾,先調(diào)一下init就行了。 - 日志生成以后如果沒有需要手動修改的部分柒爸,就啥也不用管了准浴。如果有的話可以選擇把日志導(dǎo)出事扭,放到 Sublime 里面看捎稚,比較清晰一點。
查看 git 修改記錄
可以看到求橄,TheRouter
的遷移工具還是很智能的今野,需要改的地方都自動改了。還可以直接把沒用的ARouter
方法注釋掉罐农。大家可以自己試一試条霜,如果寫了Provider
但是里面的 init 什么代碼也沒有,也會直接刪除涵亏。
單模塊自動初始化能力
并且 TheRouter
對于模塊化開發(fā)的支持非常完全宰睡,按照官方文檔的描述:TheRouter
是完全面向模塊化開發(fā)提供的一套解決方案。在模塊化開發(fā)時气筋,可能每個模塊都有自己需要初始化的一些代碼拆内。以前的做法是把這些代碼都在Application
里聲明,但是這樣可能隨著業(yè)務(wù)變動每次都需要修改Application
所在模塊宠默。TheRouter
的單模塊自動初始化能力就是為了解決這樣的情況麸恍,可以只在當(dāng)前模塊聲明初始化方法后,將會在業(yè)務(wù)場景時自動被調(diào)用搀矫。
每個加了 @FlowTask
注解的方法抹沪,都會在編譯期被解析,生成一個對應(yīng)的 Task 對象瓤球,這個對象包含了初始化方法的相關(guān)信息融欧,比如:是否異步執(zhí)行、任務(wù)名卦羡、是否依賴其他任務(wù)先執(zhí)行噪馏。
當(dāng)所有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ā)的模塊了太闺,我自己搞完我的事就下班糯景,拜拜~