
基於MVVMFrame 框架為核心基礎庫構建的組件化方案
MVVMFrameComponent組件化架構圖分層如下:

因為組件化的核心基礎庫是基於MVVMFrame ,這裡貼出MVVMFrame的架構圖如下:

組件化簡單概括就是把一個功能完整的App或模塊拆分成多個子模塊, 讓每個子模塊可以獨立編譯和運行, 也可以作為library合併到宿主App組成一個完整的App進行編譯和運行。每個模塊即可以不相互依賴,又可以相互交互。
當一個項目隨著時間的推移,需求不斷的變更與迭代。各個模塊也會變的相對複雜。維護難度也會隨之增加,時間久了,可能會引起一些新的問題。這時我們就需要組件化。
當一個App使用組件化開發方案時,主要的優勢有:組件化拆分各個模塊後,每個子模塊都可以獨立編譯和運行,這樣在開發調測某個模塊時,可以大大提高編譯速度和開發效率。多人開發時,每個人負責獨立的模塊,更有利於多人團隊協作開發。並且各個模塊之間的代碼邊界相對清晰,更易於後期維護。
MVVMFrameComponent = MVVMFrame + Component 。即MVVMFrameComponent採用MVVM模式架構的組件化方案。
宿主App:當各個子Module作為library時,則可將所有組件集成到宿主App中。此時宿主App則是一個擁有所有組件功能集合的完整的App。
組件化公共基礎庫:主要包含MVVMFrame快速開發框架,和作為組件化的一些公共的核心基礎庫,方便快速構建組件化Project 。
組件化公共資源庫:主要方便統一管理各個Module中的一些公共資源相關。
一個簡單的笑話功能模塊:主要用來展示基於MVVMFrame來實現組件化開發,作為組件化開發的Module實現示例之一。
一個簡單的新聞功能模塊:主要用來展示基於MVVMFrame來實現組件化開發,作為組件化開發的Module實現示例之一。
Project -> build.gradle內的自定義變量isBuildModule
自定義變量isBuildModule來統一管理各個子module 方便在application與library之間進行切換
當isBuildModule = true時,表示各個子module為application ,即module可獨立運行當isBuildModule = false時,表示各個子module為library ,即module作為library合併到宿主App
Project -> module-build.gradle
組件化子module通用build.gradle ,方便統一管理
根據isBuildModule來統一管理各個子module在application與library之間切換
因為MVVMFrameComponent的核心基礎庫是基於MVVMFrame的,所以需要對MVVMFrame有一定的了解,才能在使用MVVMFrameComponent時更加得心應手, 這裡不再特意介紹MVVMFrame相關的使用,具體介紹你可以直接查看MVVMFrame
對於模塊公用的可以盡量寫在BaseApp中,對於模塊相對獨立使用的,可以寫在模塊對應IComponentApp的實現實現類中。
特別說明:對於IComponentApp的實現只是為你提供對應需求的一種解決方式,是可選的。根據需要使用。
這裡貼出各模塊的IComponentApp實現類示例供參考:
module-joke中IComponentApp的實現類是JokeComponentApp
module-news中IComponentApp的實現類是NewsComponentApp
下面是module-joke中的代碼示例
class JokeComponentApp : IComponentApp {
override fun onCreate ( app : BaseApp ) {
}
}在Manifest中配置meta-data對應的IComponentApp實現類,示例如下:
<!-- name为:IComponentApp的实现类,value固定为: ComponentApp -->
< meta-data android : name = " com.king.mvvm.joke.JokeComponentApp "
android : value = " ComponentApp " />當想要獲取各模塊的IComponentApp實現類時,可通過BaseApp的getComponentApp方法獲取。
更多使用詳情,請查看app中的源碼使用示例
如果你喜歡MVVMFrameComponent,或感覺MVVMFrameComponent幫助到了你,可以點右上角“Star”支持一下,你的支持就是我的動力,謝謝?
您也可以掃描下面的二維碼,請作者喝杯咖啡☕
| 我的博客 | GitHub | Gitee | CSDN | 博客園 |
|---|---|---|---|---|
| Jenly's Blog | jenly1314 | jenly1314 | jenly121 | jenly |
| 微信公眾號 | Gmail郵箱 | QQ郵箱 | QQ群 | QQ群 |
|---|---|---|---|---|
| Jenly666 | jenly1314 | jenly1314 | 20867961 | 64020761 |