從上帝視角看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有一個新的視角和看法。


    分享到:


    相關文章: