架構——android架構演進概述

隨着業務的發展和技術的變更,Android開發也經歷了以下幾個發展階段:

看似高大上的名詞,其實遵循着最簡單的原則:分而治之(如何劃分就是“架構”,簡單的事情如何串在一起就是“接口協議”,CS領域太多這樣的例子了。)

我的理解是,模塊化/組件化/插件化都是一種廣義的模塊化,只是它們的實現方式不同而已。

模塊化系統案例:

  1. 智能android設備:Launcher, Lock Screen, Live Wallpaper,AppStore,BatteryManager
  2. Hadoop生態系統:HDFS,YARN,MapReduce等

單體應用

業務代碼 + 數據存儲 + 接口請求 + 日誌 等各個模塊雜糅在一個module中。
這種結構基本上已經不適用任何項目,只能作爲個人的測試或者demo。

優點:

  1. 編譯構建簡單

缺點:

  1. 無法適用與複雜的業務結構

廣義的模塊化

“Modular hardware lead to modular software”

模塊化特點:

  • 模塊間耦合小(模塊間一般通過接口進行通信/調用)
  • 模塊可替換(接口不變底層實現可替換)

模塊化代價:

  • 模塊間調用複雜
  • 需要擬定接口協議
  • 兼容性問題(不同的module可能依賴不同的版本)

爲什麼需要模塊化:

  • 實現高內聚低耦合的代碼
  • 不同module可以並行開發和測試
  • 靈活的集成/部署/升級

模塊化的方式:

    1. 分包
    1. Android studio中分module
    1. 應用拆分(一個應用拆分成多個應用)

俠義的模塊話

android開發時,狹義的模塊話就是在project中建立多個module。比如將數據庫的處理建立一個module,業務代碼建立一個module(業務很複雜的化也可以根據業務場景進行拆分),日誌埋點作爲一個module等

組件化

組件化是在狹義模塊化思想上的一次演進,一個變種。

組件化的核心是角色的轉換。 在打包時, 是library; 在調試時, 是application。

A在開發測試業務1時就可以把“業務1”作爲一個Application,進行構建測試。 當需要構建整個App時,“業務1”又是一個library,構建腳本就能控制這一切。

看似很簡單,但是業務場景千奇百怪,還有很多問題需要解決:

  1. 業務模塊之間的通信: 如果時統一進程直接定義接口即可,跨進程可考慮使用AIDL
  2. Main Activity入口問題: 腳本控制使用不同的AndroidManifest文件
  3. activity跳轉問題:

插件化

待補充

實例: 微信客戶端架構演進

參考:https://www.infoq.cn/article/wechat-android-app-architecture/

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章