Jetpack 是什麼?

本文章首發於公衆號 Android丨Kotlin,歡迎關注!面試

對於大多數 Android 開發工程師來講,Jetpack 必定是一個既熟悉又陌生的東西。markdown

在幾個月前,有位朋友找到我,但願讓我幫他們公司目前正在招聘的高級 Android 工程師崗位作一些技術面試。架構

一般在面試的最後階段,我會問一下他們對 Jetpack 的理解,旨在考察他們對目前 Android 主流開發技術的掌握程度以及是否還保持着對新技術持續學習的能力。app

有人回答 Jetpack 就是 LiveData、ViewModel 這些東西,有人回答 Jetpack 是一套 MVVM 框架,固然更多人的回答是,聽過、但沒用過,因此也說不出它究竟是什麼。框架

今天這篇文章,就和你們聊聊,在個人理解中 Jetpcak 究竟是什麼?在看接下來的內容以前,你們不妨先想一想這個問題,在評論區先寫下在你對 Jetpack 的定義和理解。ide

在 Jetpack 的官方文檔中是這樣對它定義的:oop

Jetpack 是一套組件庫,可幫助開發人員遵循最佳實踐,減小樣板代碼並編寫可在 Android 版本和設備上一致工做的代碼,以便開發人員能夠專一於他們關心的代碼。學習

根據定義其實能夠提煉出兩個核心點:測試

  1. 它是一套組件庫。(說明它是由許多個不一樣的組件庫構成,並非一個單一的組件庫)ui

  2. 使用 Jetpack 能夠幫助咱們在不一樣的 Android 版本和不一樣的設備上,實現行爲一致的工做代碼。(說明 Jetpack 能夠輕鬆的處理由 Android 版本不一致和設備不一樣產生的差別性和兼容性問題)

咱們先來看看 Jetpack 包含哪些組件庫

根據官網上的介紹,目前 Jetpack 一共有 85 個組件庫,有些看着很熟悉,好比:viewPager、fragment、recyclerview 等等,但有些好像根本就沒有見過,也沒有用過。

爲了弄清這 85 個組件庫分別是作什麼的,我把每個的文檔都詳細讀了一遍,包含它們是幹什麼的、如何依賴以及該如何使用,而後又分別在 Android Studio 中單獨集成,目的就是想看看它們包中到底有什麼類,究竟是幹什麼的

再結合官方 Youtube 頻道視頻內容的介紹,在通過兩天的梳理,我整理出了下面的內容。

在知道了這 85 個組件庫分別是作什麼以後,接下來我對每個庫進行了分類和打標籤,這麼作的目的是能夠幫助我在以後實際寫代碼的時候,能夠快速的使用他們。

通過第二輪的梳理,我將 Jetpack 的 85 個組件庫進行了下面的分類和標籤整理。

第一個是核心類(8個),你也能夠把它理解爲基礎類,也就是說咱們一個最基本的 Android 工程都會默認依賴這些組件庫。

第二個是架構組件(10個),Jetpack 推出以後很使人興奮的一點,就是 Google 引入了現代 Android 應用開發的架構指南,結合 MVVM 的架構設計,幫助咱們輕鬆的處理 UI 與業務邏輯之間的關係。

第三個是 UI 組件(22個),這裏須要說明一點,大多數的 UI 組件其實都包含着核心組件中的 appcompat * 中了,這裏列出的是 Jetpack 中以獨立組件庫存在的 UI 組件。

第四個是特殊業務組件(16個),根據不一樣的業務場景,選擇性使用。

第五個是用不着的組件(15個),這個徹底是處於我我的出發,目前我從事的是 Android 互聯網項目的開發,因此涉及遊戲、車載、TV 等或平時極少使用的組件,我都規整到這一類中了。

第六個是棄用的組件(11個),有一些是由於官方再也不更新維護了,有一些是在 Jetpack 中有更好的替代解決方案,若是咱們的項目中還在使用這些組件庫的話,建議儘快替換到最新的替代組件上。

第七個是用於測試的組件(2個)。

看到這裏,我想你們應該都理解了最開始的定義中,咱們提煉出的第一點內容:Jetpack 是一套組件庫。沒錯 Jetpack 是由 85 個組件庫構成的,每個均可以根據本身的需求單獨依賴使用,很是靈活和方面。

同時通過個人梳理,但願能夠幫助你們更好的瞭解了這 85 個組件庫分別是作什麼的,也但願你們能夠在經過標籤分類以後,能夠快速的在不一樣場景下,選擇合適的組件,幫助本身完成對應功能的實現。

特別分享一下, Jetpack 以前是存在於 AOSP 中的開源項目,目前同步開源到了 Github 中,當前 Activity、Fragment、Navigation、Paging、Room、WorkManager 這 5 個組件開放了貢獻權限,主要仍是以接受 Bug fixes 爲主,有興趣的同窗能夠去幫官方修修 Bug~

關於本期的內容整理,我放在了 Notion 上,點擊這裏能夠看到我整個梳理的內容,若是其中有錯誤的地方,你們能夠經過 Notion 的評論功能進行批註,我會及時修正和更新。

下一期,我會爲你們繼續分享,關於定義中的第二點內容 「Jetpack 能夠幫助咱們輕鬆的處理由 Android 版本不一致和設備不一樣產生的差別性和兼容性問題」 的理解。

若是本期的內容有幫助到你,但願能夠轉發、評論和點贊,讓更多人看到這篇文章,同時這也會對我有很大的幫助。

感謝,咱們下期再見。

相關文章
相關標籤/搜索