1、模塊間解耦,復用。
(原因:對業務進行模塊化拆分后,為了使各業務模塊間解耦,因此各個都是獨立的模塊,它們之間是沒有依賴關系。
每個模塊負責的功能不同,業務邏輯不同,模塊間業務解耦。模塊功能比較單一,可在多個項目中使用。)
2、可單獨編譯某個模塊,提升開發效率。
(原因:每個模塊實際上也是一個完整的項目,可以進行單獨編譯,調試)
3、可以多團隊並行開發,測試。
原因:每個團隊負責不同的模塊,提升開發,測試效率。
組件化與模塊化
組件化是指以重用化為目的,將一個系統拆分為一個個單獨的組件
- 避免重復造輪子,節省開發維護成本;
- 降低項目復雜性,提升開發效率;
- 多個團隊公用同一個組件,在一定層度上確保了技術方案的統一性。
模塊化業務分層:由下到上
-
基礎組件層:
底層使用的庫和封裝的一些工具庫(libs),比如okhttp,rxjava,rxandroid,glide等 -
業務組件層:
與業務相關,封裝第三方sdk,比如封裝后的支付,即時通行等 -
業務模塊層:
按照業務划分模塊,比如說IM模塊,資訊模塊等
Library module開發問題
在把代碼抽取到各個單獨的Library Module中,會遇到各種問題。最常見的就是R文件問題,Android開發中,各個資源文件都是放在res目錄中,在編譯過程中,會生成R.java文件。R文件中包含有各個資源文件對應的id,這個id是靜態常量,但是在Library Module中,這個id不是靜態常量,那么在開發時候就要避開這樣的問題。
舉個常見的例子,同一個方法處理多個view的點擊事件,有時候會使用switch(view.getId())這樣的方式,然后用case R.id.btnLogin這樣進行判斷,這時候就會出現問題,因為id不是經常常量,那么這種方式就用不了。