前言
作為一名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
提供了最基礎的底層功能,如向後兼容性、測試、開發語言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 後臺作業
行為 - 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有一個新的視角和看法。
閱讀更多 VeryGame 的文章