1. 什么是組件化開發(fā)呢?
在項目開發(fā)中,會將公用的代碼提取出來制作基礎(chǔ)庫Base Module,將某些單獨的功能封裝到Library module中,更具業(yè)務(wù)來劃分module。
組件:指的是單一的功能組件,如視頻組件(VideoSDK)、支付組件(PaySDK)、路由組件(Router)等,每個組件都能單獨抽出來制作成SDK。
模塊:指的是業(yè)務(wù)模塊(LiveModule)、首頁模塊(HomeModule)、即時通信模塊(IMModule)等。模塊相對于組件來說粒度更大,模塊可能包含多種不同的組件。
1.1 組件化開發(fā)有什么好處?
1)避免重復(fù)造輪子,可以節(jié)省開發(fā)和維護的成本。
2)可以通過組件和模塊為業(yè)務(wù)基準(zhǔn)合理地安排人力,提高開發(fā)效率。
3)不同的項目可以公用一個組件或模塊,確保整體技術(shù)方案的一致性。
4)為未來插件化共用一套底層模型做準(zhǔn)備。
1.2 模塊化開發(fā)的好處?
1)業(yè)務(wù)模塊解耦,業(yè)務(wù)移植更加簡單。
2)多團隊根據(jù)業(yè)務(wù)內(nèi)容進行并行開發(fā)和測試。
3)單個業(yè)務(wù)可以單獨編譯打包,加快編譯速度。
4)多個app共用模塊,降低了研發(fā)和維護的成本。
??組件化和模塊化都是為了代碼重用和業(yè)務(wù)解耦。區(qū)別在于模塊化是業(yè)務(wù)導(dǎo)向,組件化是功能導(dǎo)向。
??項目體積越來越大后,必定會有超過65536的一天,要么選擇multidex的方式分包解決,要么使用插件化的方式來完成項目。
??組件化和模塊化的劃分可以更好地為項目插件化開路,插件化的模塊化發(fā)布和正常發(fā)布有著非常大的差異,已經(jīng)脫離了組件化和模塊化的構(gòu)建機制,插件化擁有更高效的業(yè)務(wù)解耦。
1.1.3 基礎(chǔ)組件架構(gòu)介紹
分為應(yīng)用層、組件層和基礎(chǔ)層。
1)基礎(chǔ)層:包含一些基礎(chǔ)庫和對基礎(chǔ)庫的封裝,包括圖片加載、網(wǎng)絡(luò)加載、數(shù)據(jù)存儲等。
2)組件層:包含一些簡單的業(yè)務(wù),比如登陸、數(shù)據(jù)觀看、圖片瀏覽等。
3)應(yīng)用層用于統(tǒng)籌全部組件,并輸出生成app。
1.2.1 依賴
??Android Studio 獨有設(shè)計—— module依賴。
??module 的依賴包括對第三方庫的依賴,也包含對其他module的依賴。通過依賴我們可以訪問第三方和其他被依賴Module的代碼和資源。
三種基本的依賴方式:
1)Jar dependency:通過Gradle配置引入lib文件夾中的所有.jar后綴的文件,還能引用