從零開始Android組件化

本文依賴的知識(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)

圖片來(lái)自網(wǎng)絡(luò)

開始組件化

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)定義
config.gradle

這樣就可以把控整個(gè)項(xiàng)目的配置。

2.2 項(xiàng)目根目錄下的build.gradle中依賴config.gradle

依賴config.gradle

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

app和lib切換

如果切換到組件模式下,組件要作為獨(dú)立app,那么就需要以下配置:

  • gradle添加對(duì)應(yīng)的appID
  • 入口Activity,并在manifest里面申明application和入口activity
  • sourceSet配置組件模式和集成模式依賴的對(duì)應(yīng)資源并在對(duì)應(yīng)路徑添加資源


    組件配置

2.4 主APP的build.gradle中設(shè)置切換邏輯

主app切換邏輯

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é)以及遇到的問題......

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容