Android基於WMRouter路由的組件化方案

MannaComponent

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

項目地址

github.com/MannaYang/M…github

組件化基礎框架

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

組件化總體架構

  1. App主工程(殼工程):集成全部組件功能,無具體的業務邏輯,只提供組件注入接口網絡

  2. 頂層業務組件:由項目中不一樣的業務功能組成,對應於具體的module劃分架構

  3. 基礎功能組件:對上層業務提供相應的功能服務,常見的登陸註冊、module注入、分享、推送等框架

  4. 底層服務組件:提供基礎支撐,常見的網絡請求、路由通訊、日誌回撈等mvvm

    總體架構圖以下:組件化

業務組件拆分

每一個團隊對業務組件的拆分都有自身的考慮,可是也須要遵照一些規則gradle

  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. 其它依賴庫根據實際業務添加...

組件化之路

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

感謝開源

  1. MVVM -- Google開源的一套Jetpack組件
  2. WMRouter(github.com/meituan/WMR…)
  3. LiveEventBus(github.com/JeremyLiao/…)
  4. MVVMHabit(github.com/goldze/MVVM…)
  5. 項目中涉及引用的第三方開源庫(retrofit、okhttp等)

個人我的新球

加入星球一塊兒討論項目、研究新技術,共同成長!日誌

相關文章
相關標籤/搜索