Android 單一工程vs組件化開發

單一工程
顧名思義,就是一個代碼工程(Project)對應一個APP了,這個APP的所有業務功能都是集中在同一個工程裏實現的。

組件化
簡單來說,就是將一個APP的業務功能進行拆分,每一個功能都是一個單獨的工程(Module),每個工程都能獨立運行,且只包含自己的業務,我們姑且叫這個獨立的功能爲一個組件服務,最後由一個空殼APP將多個拆分出的組件集成而成。

單一工程

優點
**

  1. 適合人數較少(1-3),較小項目
  2. 寫起代碼來比較行雲流水,反正我基本哪裏都能訪問到…

**
缺點
**

  1. 對工程的任意修改,都要編譯整個工程,效率十分低下;
  2. 不利於多人團隊協同開發,別人改了一個地方影響到了你瞭解一下,合併代碼瞭解一下…
  3. 無法做到功能複用,例如要做客製化…
  4. 業務模塊耦合嚴重,時間長了很可能會你中有我,我中有你,修改一個業務可能會牽一髮而動全身,不利於後期迭代與維護。

**

組件化工程

優點
**

  1. 極大提高了編譯速度,只需要編譯當前的模塊;
  2. 業務模塊解耦,有利於多人協同開發,彼此互不打擾,模塊代碼質量只會侷限於自身模塊內;
  3. 組件化是功能重用的基石;
  4. 模塊之間互相不依賴,就沒有耦合。

**

缺點
**

  1. 前期需要花費更多的時間來模塊劃分;
  2. 一個人的小項目沒有必要組件化,會帶來更多的工作量;
  3. 組件化需要良好的架構設計,需要高水平的架構師統籌全局,經驗不足的同學盲目進行組件化可能會適得其反。

**

組件化需要解決的幾個問題:

  1. 如何分成各個模塊?
  2. 各個模塊之間如何進行數據共享和數據通信?
  3. 如何將各個模塊打包成一個獨立的 APP 進行調試?
  4. 如何防止資源名稱衝突?
  5. 如何解決 library 重複依賴以及 sdk 和依賴的第三方版本號控制問題?

解決方案:

  1. 根據業務進行拆分,拆分出來的模塊不要過多,會增加維護的難度。
  2. 我們可以把需要共享的數據劃分成一個單獨的模塊來放置公共數據。各個模塊之間的數據通信,我們可以使用阿里的 ARouter 進行頁面的跳轉,使用封裝之後的 RxJava 作爲 EventBus 進行全局的數據通信。
  3. 我們可以在各個模塊的 gradle 文件裏面配置需要加載的 AndroidManifest.xml 文件,並可以爲每個應用配置一個獨立的 Application 和啓動類。
  4. 遵守命名規約就能規避資源名衝突問題。
  5. 可以將各個模塊公用的依賴的版本配置到 settings.gradle 裏面,並且可以建立一個公共的模塊來配置所需要的各種依賴。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章