1. 什么是組件化開發(fā)呢?
在項目開發(fā)中蜓席,會將公用的代碼提取出來制作基礎(chǔ)庫Base Module吏垮,將某些單獨的功能封裝到Library module中,更具業(yè)務來劃分module宪躯。
組件:指的是單一的功能組件乔宿,如視頻組件(VideoSDK)、支付組件(PaySDK)访雪、路由組件(Router)等详瑞,每個組件都能單獨抽出來制作成SDK掂林。
模塊:指的是業(yè)務模塊(LiveModule)、首頁模塊(HomeModule)坝橡、即時通信模塊(IMModule)等泻帮。模塊相對于組件來說粒度更大,模塊可能包含多種不同的組件驳庭。
1.1 組件化開發(fā)有什么好處刑顺?
1)避免重復造輪子,可以節(jié)省開發(fā)和維護的成本饲常。
2)可以通過組件和模塊為業(yè)務基準合理地安排人力蹲堂,提高開發(fā)效率。
3)不同的項目可以公用一個組件或模塊贝淤,確保整體技術(shù)方案的一致性柒竞。
4)為未來插件化共用一套底層模型做準備。
1.2 模塊化開發(fā)的好處播聪?
1)業(yè)務模塊解耦朽基,業(yè)務移植更加簡單。
2)多團隊根據(jù)業(yè)務內(nèi)容進行并行開發(fā)和測試离陶。
3)單個業(yè)務可以單獨編譯打包稼虎,加快編譯速度。
4)多個app共用模塊招刨,降低了研發(fā)和維護的成本霎俩。
??組件化和模塊化都是為了代碼重用和業(yè)務解耦。區(qū)別在于模塊化是業(yè)務導向沉眶,組件化是功能導向打却。
??項目體積越來越大后,必定會有超過65536的一天谎倔,要么選擇multidex的方式分包解決柳击,要么使用插件化的方式來完成項目。
??組件化和模塊化的劃分可以更好地為項目插件化開路片习,插件化的模塊化發(fā)布和正常發(fā)布有著非常大的差異捌肴,已經(jīng)脫離了組件化和模塊化的構(gòu)建機制,插件化擁有更高效的業(yè)務解耦藕咏。
1.1.3 基礎(chǔ)組件架構(gòu)介紹
分為應用層状知、組件層和基礎(chǔ)層。
1)基礎(chǔ)層:包含一些基礎(chǔ)庫和對基礎(chǔ)庫的封裝侈离,包括圖片加載试幽、網(wǎng)絡加載筝蚕、數(shù)據(jù)存儲等卦碾。
2)組件層:包含一些簡單的業(yè)務铺坞,比如登陸、數(shù)據(jù)觀看洲胖、圖片瀏覽等济榨。
3)應用層用于統(tǒng)籌全部組件,并輸出生成app绿映。
1.2.1 依賴
??Android Studio 獨有設計—— module依賴擒滑。
??module 的依賴包括對第三方庫的依賴,也包含對其他module的依賴叉弦。通過依賴我們可以訪問第三方和其他被依賴Module的代碼和資源丐一。
三種基本的依賴方式:
1)Jar dependency:通過Gradle配置引入lib文件夾中的所有.jar后綴的文件,還能引用