一、模塊間解耦,複用。java
(緣由:對業務進行模塊化拆分後,爲了使各業務模塊間解耦,所以各個都是獨立的模塊,它們之間是沒有依賴關係。android
每一個模塊負責的功能不一樣,業務邏輯不一樣,模塊間業務解耦。模塊功能比較單一,可在多個項目中使用。)ide
二、可單獨編譯某個模塊,提高開發效率。模塊化
(緣由:每一個模塊實際上也是一個完整的項目,能夠進行單獨編譯,調試)工具
三、能夠多團隊並行開發,測試。組件化
緣由:每一個團隊負責不一樣的模塊,提高開發,測試效率。測試
組件化是指以重用化爲目的,將一個系統拆分爲一個個單獨的組件spa
模塊化業務分層:由下到上調試
基礎組件層:
底層使用的庫和封裝的一些工具庫(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不是常常常量,那麼這種方式就用不了。