一、google 官方推出的架構設計標準 Jetpack
Android 架構發展 : Android 架構的發展 途徑了 MVC -> MVP -> MVVM 等方案 , 這些架構都 不是 Google 官方提出的 , 都是各個團隊 根據自己的需求推出的適合自己的架構方案 ;
Jetpack 是 Google 推出的 架構設計標準 , 是官方推出 架構設計指導方案 ;
借助 Jetpack 提供的一系列的 工具 和 組件 , Android 開發者 可以 快速高效地 構建出 高質量 / 高性能 的應用架構 ;
使用 Jetpack 提供的架構 , 可以 簡化 Android 應用開發架構相關內容 , 并且可以 減少格式化樣本代碼的編寫 , 開發者可以使用更多的精力和時間 專注于 業務邏輯 的開發 ;
同時 , 還可以 減少 出錯崩潰 的概率 , 內存泄漏 , 降低代碼復雜度 ;
二、Jetpack 組成套件
Jetpack 是 Google 官方提出的 , 由 多個 庫 組成的 套件 , 這些庫包括 :
- UI 庫 : Animation , Transitions , Emoji , Layout , Palette …
- 架構庫 : Data Binding , ViewModel , Lifecycles , LiveData , Navigation , Padding , Room …
- 行為庫 : Download Manager , Permissions , Notifications , Sharing …
- 基礎庫 : AppCompat , Android KTX , Multidex , Test …
三、Jetpack 架構
Jetpack 是 Google 推出的 架構設計標準 , 是官方推出 架構設計指導方案 ;
Jetpack 架構 是 基于 分層結構設計 和 模塊化開發 的 設計思想 提出的 ;
Jetpack 提供了一系列的組件類型 :
- 基礎組件 : 提供 基礎 功能 , 可以 簡化開發 , 提高 代碼 可維護性 ; 如 : Android KTX ;
- 架構組件 : 構建 響應式的 , 高效的 , 可測試 的應用程序 ; 如 : ViewModel 管理 UI 數據模型 , LiveData 用于 響應數據 改變 , Room 管理數據庫模塊 等 ;
- UI 組件 : 創建 靈活 , 美觀 , 易于擴展 的 UI 界面 ; 如 : ConstraintLayout 約束布局 , RecyclerView 列表 , ViewPager2 組件 ;
- 測試組件 : 創建 可靠 自動化測試 模塊 ; 如 : JUtils , Espresso , UI Automator 等測試組件 ;
- 功能組件 : 管理 后臺任務 , 導航 , 分頁 等實際功能 ; 如 : WorkManager 等 ;
Jetpack 架構中 , 每個組件 都有其 相應的 功能 , 根據 項目的需求 , 和 團隊的分工 , 將各種組件 進行 組合使用 , 就可以 構成一個 高可靠性的 項目架構 ;
使用 Jetpack 組件組合成的 架構設計 , 可以快速構建 應用程序 , 并且提高程序的穩定性 , 可維護性 ;
四、Jetpack 的存在意義
1、提高開發效率
Jetpack 提供了 大量 現成 的 組件 和 工具 , 可以快速 構建 高質量 / 高性能 的 Android 工程 , 并且可以 提高 代碼的 穩定性 , 可維護性 ;
使用 Jetpack 庫 , 減少了很多 重復性的 代碼工作 , 提高了開發效率 ;
2、最佳架構方案
Jetpack 是 Google 推薦的最佳的架構方案 , 一直在 不斷更新 , 并且 兼容之前的 Android 系統版本 ;
使用 Jetpack 可以減少 架構帶來 內存泄漏 和 崩潰 ;
3、消除樣本代碼
使用 Jetpack 開發套件 , 可以輕松進行 工程架構 , 減少不必要的 架構相關的樣板代碼 , 開發者只需要專心開發自己的邏輯代碼即可 ;
Jetpack 提供了一套 UI , 行為 , 架構 相關的解決方案 , 開發者可以不用再架構上浪費時間 , 專心開發自己的邏輯 ;
樣板代碼示例 : Activity 中管理各種生命周期 ;
4、設備系統兼容性
開發 Android 應用 , 需要 考慮到 Android 的各個版本的特性 , 以及 各個 Android 手機廠商的適配問題 , 需要花費大量的時間精力進行適配工作 ;
使用 Jetpack 可以保證 在 各個 Android 版本 , 各種 Android 設備中 , 保持運行一致 , 可以降低 測試 , 適配 的 工作量 ;
Jetpack 自帶設備系統兼容性解決方案 ;
5、改善應用性能
使用 Jetpack 提供的 一系列的 組件 和 工具 , 可以
- 提高 應用的 性能 ,
- 提高 代碼穩定性 ,
- 提高 代碼可維護性 ,
- 減少應用崩潰 ,
- 減少應用內存泄漏 ;
6、測試支持
Jetpack 提供了一系列的 測試組件 ,
借助 Espresso , UI Automator , JUnit 測試組件 ,
可以快速 創建 Android 自動化測試 功能 ,
提高 程序的 質量 , 提高代碼的穩定性 ;
五、AndroidX 與 Jetpack 的關系
Google 推出的 AndroidX 庫 , 其 更新頻率很頻繁 , AndroidX 沒有并入 SDK , 是因為其 更新頻率很高 , 幾乎 每個月都要更新 , Android 的 SDK 每次只在新版本發布時才更新 , 基本要半年到一年才能更新一次 ;
官方的 SDK 有很多不完善的地方 , Google 開發了很多開源項目 , 對 SDK 缺陷進行修復 , 這些開源項目最后都并入了 AndroidX 項目 , 其中每個子項目都在更新 , 因此 AndroidX 更新頻率很高 ;
AndroidX 與 Jetpack 的關系 :
- AndroidX 的命名空間 中 包含了 Jetpack 套件 ;
- 之前的 Android Support Library 已經停止更新 , 官方推薦使用 AndroidX 替代 Android 支持庫 ;
- Android Architecture Component 架構組件 也 并入了 AndroidX ;
官方推出的庫 , 除 SDK 之外的都并入到了 AndroidX 命名空間中 ;