從上帝視角看Android JetPack

從上帝視角看Android JetPack

前言

作為一名Android老司機,什麼Square全家桶,Glide, 各種Bus, MVP,MVVM等等跟Android開發相關的主流的名詞那都是如數家珍 。

很多時候我們吐槽,Android碎片化嚴重,Google爸爸又天高皇帝遠,對國內的Android生態又心有餘而力不足。國內的Android開發者很長一段時間也基本處於散養的狀態。專案的庫基本都是用上面說到的主流庫,自己動手,豐衣足食。

可能大部分開發者們更focus的是當下的某個技術點,而缺乏從整個架構戰略的方向去看待圈內的整個生態。

歷史背景

大體上,JetPack是Google推出的一些庫的集合。是Android基礎支援庫SDK以外的部分。包含了元件、工具、架構方案等。。。開發者可以自主按需選擇接入具體的哪個庫。

Google IO 2017

開始。Google 開始推出Architecture Component, ORM庫Room, 使用者生命週期管理的ViewModel/ListData。

Google IO 2018

將Support lib 更名為androidx。 將許多Google認為是正確的方案和實踐集中起來。以高效的開發Android APP。

Google IO 2019

大會上公佈新的安卓UI庫Jetpack Compose。

以上種種,現在統稱為JetPack。其最核心的出發點就是幫助開發者快速構建出穩定、高效能、測試友好同時向後相容的APP。

特點

高效開發:包含的多個元件協同使用

消除模板程式碼:可管理繁瑣的 Activity,如 後臺任務、導航和生命週期管理

高質量:圍繞現代化設計實踐構建、具有向後相容性,可有效減少崩潰 & 記憶體洩漏

組成

Android Jetpack的元件主要分為四大類:

基礎 -

Foundation

架構 -

Architecture

行為 -

Behavior

介面 -

UI

從上帝視角看Android JetPack

基礎 - Foundation

提供了最基礎的底層功能,如向後相容性、測試、開發語言Kotlin支援等。包含的元件庫:

Android KTX:編寫更簡潔、慣用的 Kotlin 程式碼

AppCompat:在較低版本的 Android 系統上恰當地降級

Auto:有助於開發 Android Auto 應用的元件

檢測:從 Android Studio 中快速檢測基於 Kotlin 或 Java 的程式碼

多 dex 處理:為具有多個 DEX 檔案的應用提供支援

安全:按照安全最佳做法讀寫加密檔案和共享偏好設定

測試:用於單元和執行時介面測試的 Android 測試框架

TV:有助於開發 Android TV 應用的元件

Wear OS by Google :谷歌有助於開發 Wear 應用的元件

架構 - Architecture

架構元件可幫助您設計穩健、可測試且易維護的應用。

資料繫結:以宣告方式將可觀察資料繫結到介面元素

Lifecycles:管理您的 Activity 和 Fragment 生命週期

LiveDat::在底層資料庫更改時通知檢視

Navigation:處理應用內導航所需的一切

Paging:逐步從您的資料來源按需載入資訊

Room:流暢地訪問 SQLite 資料庫

ViewModel:以注重生命週期的方式管理介面相關的資料

WorkManager:管理您的 Android 後臺作業

從上帝視角看Android JetPack

Google官方推薦的應用架構

行為 - Behavior

幫助應用與標準的 Android 服務(如通知、許可權、分享和 Google 助理)相整合。包含元件庫:

相機 - CameraX:簡化相機應用的開發工作,可向後相容至 Android 5。0(API 級別 21)

下載 - DownloadManager:可處理長時間執行的HTTP下載 & 超時重連

多媒體 - Media & playback:用於媒體播放 & 路由的向後相容 API。

通知 - Notifications:提供向後相容的通知 API,支援 Wear 和 Auto。

許可權 - Permissions:用於檢查和請求應用許可權的相容性 API。

偏好設定 - Preferences:提供了能夠改變應用的功能和行為能力。

共享 - Sharing:提供適合應用操作欄的共享操作。

切片 - Slices:建立可在應用外部顯示應用資料的靈活介面元素。

介面 - UI

輔助繪製介面的View類 & 各種輔助元件,包括:

動畫 - Animation & Transitions:提供各類內建動畫,也可以自定義動畫效果。

表情 - Emoji:使使用者在未更新系統版本的情況下也可以使用表情符號。

佈局 - Layout:xml書寫的介面佈局或者使用Compose完成的介面。

除錯板 - Palette:從調色盤中提取出有用的資訊。

如何看待Jetpack

前文說過了,JetPack更多是一種概念和態度。相當於Google把自己的Android生態重新整理了一番。確立了Android未來的版圖和大方向。

JetPack裡目前包含的內容,未來也會是Google大力維護和擴充套件的內容。對應開發者來說也是值得去學習使用的且相對無後顧之憂的。JetPack裡沒有的,除開一些優秀的第三方庫,未來應該也會慢慢被新的API替代,逐漸邊緣化,直至打上Deprecate註解。

以當下的環境來說,要開發出一個完全擺脫JetPack的APP是很難做到的。但是反過來講JetPack也遠遠沒有到成熟的地步,目前也還存在亟待解決的問題,未來可以做的事情還有很多。

關於使用的話,並不是所有庫都建議使用,因為目前還有很多庫在alpha版本。但是作為學習還是很有必要的,能給你日常的開發中多提供一些思路,這些是無可厚非的。

總的來說,JetPack的推廣對廣大開發者而言是利遠遠大於弊的。

最後,感謝你閱讀到這裡。但願這篇文章能讓你對Android有一個新的視角和看法。