摘要
為了讓大家能快速對android元件化有個整體的認識,本文將從多個維度對目前網上一些有代表性的開源元件化開發方案進行對比,從而更好的區分各元件化方案的特點,快速選擇適合自己使用的方案深入學習並使用,在面試中被問到時也能做到心中有數。
前言
android平臺上元件化開發的概念近兩年非常火熱,有些同學反映在面試中被問到的頻率也很高。
目前網上關於元件化開發方案的文章、開源庫比較多,讓很多初學者感到迷茫,不知該從何處入手,難以確定自身的業務特性適合使用哪種框架,如果全部都學習一遍成本比較高,而且在學習過程中容易將各方案的一些特性記混淆。
為了讓大家能快速對android元件化有個整體的認識,本文將從多個維度對目前網上一些有代表性的開源元件化開發方案進行對比,從而更好的區分各元件化方案的特點,快速選擇適合自己使用的方案深入學習並使用,在面試中被問到時也能做到心中有數。
由於篇幅及個人精力所限,只選取了比較有代表性的幾個元件化方案進行比較,對比內容中如有謬誤之處,歡迎大家指正,可以在評論中留言或者提issue和pr給我,和我一起完善更多元件化方案的對比,降低開發者學習元件化技術的難度。
持續更新中,歡迎watch、star
對比表
markdown語法對錶格支援的不太友好,為了方便檢視,下面貼出對比表的截圖,具體的表格見github
?手機上圖片顯示不清晰,請點選此處看大圖
表格中框架的相關連結
其它比較有特色的元件化方案簡介
-
51信用卡路由方案OkDeepLink
曾經在作者的github賬號上開源,現已刪除,作者在博文中提到後續2.0版會放到公司的github賬號上,但一直未釋出。 這裡有個fork版本
這個方案中使用aspectJ來實現路由表的自動註冊,與其它方案不太一樣,不過此方案的作者也打算廢棄這種方式,理由是aspectJ還是太重了
這個方案文章中還提到了關於路由安全的措施,其中有使用URL中加簽名的方式來遮蔽非法訪問,類似於客戶端連線服務端的http請求對引數進行加密校驗
-
元件匯流排方案ModuleBus
介紹文件:元件化開發跨module互動方式---ModuleBus互動
這個方案的特別之處在於其借鑑了EventBus的思想,元件的註冊/登出和元件呼叫的事件傳送都跟EventBus類似
-
美柚路由方案RouterKit
這個方案的特別之處在於其元件自動註冊的方案:通過apt生成每個module的路由表,然後複製到app的assets目錄,執行的時候遍歷asset目錄,反射對應的activity