動態

詳情 返回 返回

Android基於WMRouter路由的組件化方案 - 動態 詳情

MannaComponent

Android組件化開發框架,基於開源的WMRouter路由、LiveEventBus事件總線、Jetpack系列的MVVM組件集成開發

項目地址

https://github.com/MannaYang/MannaComponent

組件化基礎框架

  1. WMRouter提供基礎的路由+ServiceLoader兩大組件通信功能
  2. LiveEventBus提供跨module、跨進程的消息通信

組件化整體架構

  1. App主工程(殼工程):集成所有組件功能,無具體的業務邏輯,只提供組件注入接口
  2. 頂層業務組件:由項目中不同的業務功能組成,對應於具體的module劃分
  3. 基礎功能組件:對上層業務提供相應的功能服務,常見的登錄註冊、module注入、分享、推送等
  4. 底層服務組件:提供基礎支撐,常見的網絡請求、路由通信、日誌回撈等
整體架構圖如下:

業務組件拆分

每個團隊對業務組件的拆分都有自身的考慮,但是也需要遵守一些規則

  1. 避免循環依賴,不能module A依賴module B,而後module B反向依賴module A
  2. 業務功能職責劃分清晰,不能簡單的將一個功能模塊單獨放入一個module,對應接口、UI、數據可做細分
  3. 組件劃分使用上,功能單一且可複用,命名規範,對外提供下沉接口實現
  4. 其它自己團隊的一些方式...

組件化開發規範

  1. 統一第三方版本管理,集中管控引入項目的第三方庫,避免造成版本衝突
  2. 統一module資源命名,可通過gradle中加入resourcePrefix,統一資源前綴,規範資源引用
  3. module對應的使用文檔,包含組件的功能、歷史版本記錄、對外提供哪些接口訪問等
  4. 其它自己團隊的一些規範...

關於該項目的使用

  1. 本項目由公司組件化項目中剝離而出,刪除了公司項目的相關代碼,需要clone下來自行改造,同時也是方便功能擴展
  2. 項目中的mvvm使用沒有加入DataBinding,在公司項目中也僅僅是在某個module下進行使用,需要自行根據項目需要驗證該技術框架
  3. 項目中的Rx系列僅保留了版本管控,在公司項目中也僅僅是在某個module下進行使用,可根據實際業務在對應module的ApiService接口中進行擴展
  4. 其它依賴庫根據實際業務添加...

組件化之路

關於組件化已經有很多前輩、大公司在前方探路數年,每個團隊也都有符合自身業務的組件化框架,我們要做的更多是在
深入理解業務的基礎上做出相對適合的、能夠持續交付的、可動態擴展的業務功能和架構,從而滿足項目中日益變化的需求...

感謝開源

  1. MVVM -- Google開源的一套Jetpack組件
  2. WMRouter(https://github.com/meituan/WMRouter)
  3. LiveEventBus(https://github.com/JeremyLiao/LiveEventBus)
  4. MVVMHabit(https://github.com/goldze/MVVMHabit)
  5. 項目中涉及引用的第三方開源庫(retrofit、okhttp等)
user avatar xiaoniuhululu 頭像 lazytimes 頭像 sofastack 頭像 u_16502039 頭像 seazhan 頭像 tech 頭像 lenglingx 頭像 u_11365552 頭像 jiangyi 頭像 himeka 頭像 lvlaotou 頭像 uwatechnologies 頭像
點贊 33 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.