本文依賴的知識(shí)點(diǎn):
Android Gradle語(yǔ)法
什么是組件化?
項(xiàng)目開發(fā)到一定階段時(shí),隨著需求的增加以及頻繁地變更,項(xiàng)目越來(lái)越大,越來(lái)越臃腫,各個(gè)module之間依賴嚴(yán)重,每次打包編譯都要耗時(shí)很久。而且因?yàn)橐蕾噰?yán)重,所以同項(xiàng)目開發(fā)人員之間無(wú)法并行開發(fā),影響開發(fā)效率。
為了解決這個(gè)問題,對(duì)項(xiàng)目各個(gè)模塊進(jìn)行解藕,拆分。這個(gè)過程叫做組件化。
為什么需要組件化?
簡(jiǎn)言之:代碼解耦,并行開發(fā)
通過不同維度和應(yīng)用環(huán)境下進(jìn)行不同程度的拆分,達(dá)到組件靈活配置,增加開發(fā)效率的目的。 所以細(xì)化來(lái)說,組件化就是根據(jù)功能和業(yè)務(wù)來(lái)拆分module,最后module組成模塊,而后模塊組裝成應(yīng)用。
組件化的基本架構(gòu)

開始組件化
1. 基礎(chǔ)庫(kù)的封裝
將基礎(chǔ)庫(kù)封裝到common_base模塊中。
2. 組件模式和集成模式的切換(libs和app之間切換的能力)
因?yàn)橐獙?shí)現(xiàn)各個(gè)module之間解藕,能實(shí)現(xiàn)并行開發(fā),所以必要的功能模塊應(yīng)該可以單獨(dú)打包測(cè)試,而互不影響。
2.1 項(xiàng)目根目錄下添加一個(gè)自定義的gradle文件
在文件里面需要添加額外的屬性:
- 模塊切換app的開關(guān)
- 依賴庫(kù)以及版本號(hào)定義

這樣就可以把控整個(gè)項(xiàng)目的配置。
2.2 項(xiàng)目根目錄下的build.gradle中依賴config.gradle

2.3 在對(duì)應(yīng)組件module的build.gradle中設(shè)置切換邏輯

如果切換到組件模式下,組件要作為獨(dú)立app,那么就需要以下配置:
- gradle添加對(duì)應(yīng)的appID
- 入口Activity,并在manifest里面申明application和入口activity
-
sourceSet配置組件模式和集成模式依賴的對(duì)應(yīng)資源并在對(duì)應(yīng)路徑添加資源
組件配置
2.4 主APP的build.gradle中設(shè)置切換邏輯

3. 組件間通信實(shí)現(xiàn)
組件間通信的實(shí)現(xiàn)是采用了阿里的Arouter路由通信。
至于Arouter的使用請(qǐng)參考:
https://github.com/alibaba/ARouter/blob/master/README_CN.md
到目前項(xiàng)目的組件化基本完成,后續(xù)更新項(xiàng)目完善后的更多細(xì)節(jié)以及遇到的問題......
