前言
歷史背景作為一名Android老司機,什麼Square全家桶,Glide, 各種Bus, MVP,MVVM等等跟Android開發相關的主流的名詞那都是如數家珍 。
很多時候我們吐槽,Android碎片化嚴重,Google爸爸又天高皇帝遠,對國內的Android生態又心有餘而力不足。國內的Android開發者很長一段時間也基本處於散養的狀態。專案的庫基本都是用上面說到的主流庫,自己動手,豐衣足食。
可能大部分開發者們更focus的是當下的某個技術點,而缺乏從整個架構戰略的方向去看待圈內的整個生態。
特點高效開發:包含的多個元件協同使用消除模板程式碼:可管理繁瑣的 Activity,如 後臺任務、導航和生命週期管理高品質:圍繞現代化設計實踐構建、具有向後相容性,可有效減少崩潰 & 記憶體洩漏組成大體上,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。
Android Jetpack的元件主要分為四大類:
基礎 - Foundation架構 - Architecture行為 - Behavior介面 - UI基礎 - Foundation
架構 - Architecture提供了最基礎的底層功能,如向後相容性、測試、開發語言Kotlin支援等。包含的元件庫:
Android KTX:編寫更簡潔、慣用的 Kotlin 程式碼
AppCompat:在較低版本的 Android 系統上恰當地降級
Auto:有助於開發 Android Auto 應用的元件
檢測:從 Android Studio 中快速檢測基於 Kotlin 或 Java 的程式碼
多 dex 處理:為具有多個 DEX 檔案的應用提供支援
安全:按照安全最佳做法讀寫加密檔案和共享偏好設定
測試:用於單元和執行時介面測試的 Android 測試框架
TV:有助於開發 Android TV 應用的元件
Wear OS by Google :谷歌有助於開發 Wear 應用的元件
架構元件可幫助您設計穩健、可測試且易維護的應用。
資料繫結:以宣告方式將可觀察資料繫結到介面元素
Lifecycles:管理您的 Activity 和 Fragment 生命週期
LiveDat::在底層資料庫更改時通知檢視
Navigation:處理應用內導航所需的一切
Paging:逐步從您的資料來源按需載入資訊
Room:流暢地訪問 SQLite 資料庫
ViewModel:以注重生命週期的方式管理介面相關的資料
WorkManager:管理您的 Android 後臺作業
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有一個新的視角和看法。