Android Jetpack(1):Jetpack介紹

Jetpack官網

Android Jetpack

2018年穀歌I/O 發佈了一系列輔助android開發者的實用工具,合稱Jetpack,以幫助開發者構建出色的 Android 應用。Android Jetpack 完美兼容 Kotlin 語言,利用 Android KTX 可大幅節省代碼量。

Jetpack中的有些組件並不是第一次推出,其中LifeCycle、LiveData、ViewModel、Room等組件早在 Google I/O 2017年大會上就隨着 Android Architecture Component(AAC)一起推出了,但是推廣效果一般。時隔一年後谷歌在AAC的基礎之上發佈了Jetpack,併發布了其他工具以解決Android技術選型亂以及開發不規範等問題。

Jetpack 是一套庫、工具和指南,可幫助開發者更輕鬆地編寫優質應用。這些組件可幫助您遵循最佳做法、讓您擺脫編寫樣板代碼的工作並簡化複雜任務,以便您將精力集中放在所需的代碼上。

Jetpack 包含與平臺 API 解除捆綁的 androidx.* 軟件包庫。這意味着,它可以提供向後兼容性,且比 Android 平臺的更新頻率更高,以此確保您始終可以獲取最新且最好的 Jetpack 組件版本。

現在在 Google 應用市場當中,大部分 APP 已經開始使用 Android Jetpack。通過 Android Jetpack 可以讓我們的 BUG 減少,讓我們把更多的精力放在打造應用本身。

JetPack的組成

Jetpack 組件覆蓋以下 4 個方面:Architecture、Foundation、Behavior 以及 UI。

  • Architecture(架構):架構組件可幫助您設計穩健、可測試且易維護的應用。
  • Foundation(基礎): 基礎組件可提供橫向功能,例如向後兼容性、測試和 Kotlin 語言支持。
  • Behavior(行爲): 行爲組件可幫助您的應用與標準 Android 服務(如通知、權限、分享和 Google 助理)相集成。
  • UI(界面) :界面組件可提供微件和輔助程序,讓您的應用不僅簡單易用,還能帶來愉悅體驗。

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

爲何使用 Android Jetpack?

1. 快速開發

組件可以單獨採用(不過這些組件是爲協同工作而構建的),同時利用 Kotlin 語言功能幫助您提高工作效率。

2. 消除樣板代碼

Android Jetpack 可管理繁瑣的 Activity(如後臺任務、導航和生命週期管理),以便您可以專注於如何讓自己的應用出類拔萃。

3. 構建高質量的強大應用

Android Jetpack 組件圍繞現代化設計實踐構建而成,具有向後兼容性,可以減少崩潰和內存泄漏。

在這裏插入圖片描述

Architecture(架構組件)

架構組件可幫助開發者設計穩健、可測試且易維護的應用。它包含如下組件庫:

  • Data Binding(數據綁定):數據綁定庫是一種支持庫,藉助該庫,可以使用聲明式將佈局中的界面組件綁定到應用中的數據源。
  • Lifecycles:方便管理 Activity 和 Fragment 生命週期,幫助開發者書寫更輕量、易於維護的代碼。
  • ViewModel:以生命週期感知的方式存儲和管理與UI相關的數據。
  • LiveData:是一個可觀察的數據持有者類。與常規observable不同,LiveData是有生命週期感知的。
  • Navigation:處理應用內導航所需的一切。
  • Room:Room持久性庫在SQLite上提供了一個抽象層,幫助開發者更友好、流暢的訪問SQLite數據庫。
  • Paging:幫助開發者一次加載和顯示小塊數據。按需加載部分數據可減少網絡帶寬和系統資源的使用。
  • WorkManager:即使應用程序退出或設備重新啓動,也可以輕鬆地調度預期將要運行的可延遲異步任務。

Foundation(基礎組件)

礎組件提供了橫向功能,例如向後兼容性、測試以及Kotlin語言的支持。它包含如下組件庫:

  • Android KTX:Android KTX 是一組 Kotlin擴展程序,它優化了供Kotlin使用的Jetpack和Android平臺的API。以更簡潔、更愉悅、更慣用的方式使用Kotlin進行Android開發。
  • AppCompat:提供了一系列以AppCompat開頭的API,以便兼容低版本的Android開發。
  • Cars(Auto):有助於開發 Android Auto 應用的組件,無需擔心特定於車輛的硬件差異(如屏幕分辨率、軟件界面、旋鈕和觸摸式控件)。
  • Benchmark(檢測):從 Android Studio 中快速對基於 Kotlin 或 Java 的代碼進行基準化分析。衡量代碼性能,並將基準化分析結果輸出到 Android Studio 控制檯。
  • Multidex(多Dex處理):爲方法數超過 64K 的應用啓用多 dex 文件。
  • Security(安全):按照安全最佳做法讀寫加密文件和共享偏好設置。
  • Test(測試):用於單元和運行時界面測試的 Android 測試框架。
  • TV:構建可讓用戶在大屏幕上體驗沉浸式內容的應用。
  • Wear OS:有助於開發 Wear 應用的組件。

Behavior(行爲)

行爲組件可幫助開發者的應用與標準 Android 服務(如通知、權限、分享和 Google 助理)相集成。它包含如下組件庫:

  • CameraX:幫助開發者簡化相機應用的開發工作。它提供一致且易於使用的 API 界面,適用於大多數 Android 設備,並可向後兼容至 Android 5.0(API 級別 21)。
  • DownloadManager(下載管理器):可處理長時間運行的HTTP下載,並在出現故障或在連接更改和系統重新啓動後重試下載。
  • Media & playback(媒體&播放):用於媒體播放和路由(包括 Google Cast)的向後兼容 API。
  • Notifications(通知):提供向後兼容的通知 API,支持 Wear 和 Auto。
  • Permissions(權限):用於檢查和請求應用權限的兼容性 API。
  • Preferences(偏好設置):提供了用戶能夠改變應用的功能和行爲能力。
  • Sharing(共享):提供適合應用操作欄的共享操作。
  • Slices(切片):創建可在應用外部顯示應用數據的靈活界面元素。

UI(界面組件)

界面組件可提供各類view和輔助程序,讓應用不僅簡單易用,還能帶來愉悅體驗。它包含如下組件庫:

  • Animation & Transitions(動畫&過度):提供各類內置動畫,也可以自定義動畫效果。
  • Emoji(表情符號):使用戶在未更新系統版本的情況下也可以使用表情符號。
  • Fragment:組件化界面的基本單位。
  • Layout(佈局):xml書寫的界面佈局或者使用Compose完成的界面。
  • Palette(調色板):從調色板中提取出有用的信息。

AAC架構(Android Archicture Components):谷歌推薦的應用架構

在這裏插入圖片描述

Jetpack優缺點

在這裏插入圖片描述

Jetpack 與 AndroidX

Jetpack 是各種組件庫的統稱,AndroidX 是這些組件的統一包名。

AndroidX 對原始 Android Support Library 進行了重大改進,後者現在已不再維護。androidx 軟件包完全取代了 support 包,不僅提供同等的功能,而且提供了新的庫。Jetpack 組件中也是完全使用 androidx 開頭的包名。

與 Support Library 一樣,androidx 命名空間中的庫與 Android 平臺分開提供,並向後兼容各個 Android 版本。

注意:

  1. AndroidX 中的所有軟件包都使用一致的命名空間,以字符串 androidx 開頭。Support Library 軟件包已映射到對應的 androidx.* 軟件包。
  2. 與 Support Library 不同,androidx 軟件包會單獨維護和更新。從版本 1.0.0 開始,androidx 軟件包使用嚴格的語義版本控制。可以單獨更新項目中的各個 AndroidX 庫。
  3. 版本 28.0.0 是 Support Library 的最後一個版本。以後將不再發布 android.support 庫版本。所有新功能都將在 androidx 命名空間中開發。

在應用中使用 Jetpack 庫

所有 Jetpack 組件都可在 Google Maven 代碼庫中找到。

目前Jetpack組件已經包含在AndroidX中,AndroidX是Jetpack的包含的支持庫的具體位置,所以如果項目以及遷移到了AndroidX了,就不需要額外導包。如果沒有兼容AndroidX 那麼需要在gradle中進行配置:

打開項目的 build.gradle 文件並添加 google() 代碼庫,如下所示:

allprojects {
   
   
    repositories {
   
   
        google()
        jcenter()
    }
}

然後,您可以添加 Jetpack 組件(例如 LiveData 和 ViewModel 等架構組件),如下所示:

dependencies {
   
   
    def lifecycle_version = "2.2.0"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    ...
}

許多 Jetpack 庫都提供 Android KTX 擴展,如上面的 lifecycle-livedata-ktx 和 lifecycle-viewmodel-ktx 所示。KTX 擴展在基於 Java 的 API 基礎上構建,充分利用了 Kotlin 特有的語言功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章