1. 程式人生 > 實用技巧 >歷史角度看Support Library 到 AndroidX

歷史角度看Support Library 到 AndroidX

歷史角度看Support Library 到 AndroidX


更多文章分類

我們都知道 Google 在 2014 年 I/O 大會上為了統一我們 Android 端 APP 的設計風格,讓 APP 更加美觀,釋出了新的設計語言----Material Design。突出“卡片設計”。基於網格的佈局、響應動畫與過渡、填充、深度效果(如光線和陰影)。

它是一種設計規範,是設計人員應該去學習的,無關乎用什麼開發語言,大家不要搞混了!

推出 Material Design 後,Google 在 Android 5.0 上將自家的所有內建應用都使用了 Material Design 的風格來進行設計。樣式非常美觀。

雖然樣式非常美觀,但是推出後普及程度非常不理想,特別是在中國,由於 MaterialDesign 只是一個設計規範,主要是面向 UI 設計師的,UI 設計師應該去學習這種設計風格,然後設計出屬於這種官方推薦的風格的 APP。我們都知道國內的特殊情況,Google 一直進不來,手機廠商又有許多,而且彼此不統一,沒有一個很好的管理者,因此碎片化十分嚴重,想要使用 Material Design 這種設計風格來統一所有的 android APP 那幾乎不可能。就現在而言,你問一個 UI 設計師什麼是 Material Design 他們可能都不知道,只知道照搬 iOS 上的 APP 的設計風格然後抄一遍。這裡說的只是國內的情況。

當然就算你的 UI 設計師真正懂了 Material Design 出了原型圖了,那麼對於開發者人員來說自己去實現 Material Design 的效果也是很難的。於是 Google 為了解決這個問題在 2015 年的 I/O 大會上推出了 Design Support 庫,在這個庫將 Material Design 中一些代表性的控制元件和效果進行了封裝,來幫助開發者完成一個屬於 Material Design 設定風格的 APP

好了,到此為止 Material Design 的一段歷史就介紹完了,下面開始講下一段歷史了。

我們都知道 Android 在 2008 年釋出了它的第一個正式版本,系統釋出後都是要不斷的進行迭代更新的,新的系統中會加入新的 API,但是這些新加入的 API 在老版本的系統中是沒有的,這個時候如果我們的 APP 中使用了新版本中加入的 API,那麼執行在新版本系統的手機上是可以的,如果在低版本的手機上就會出問題了,為了相容低版本手機。推出了 Android Support Library

庫,一些後來新增的 api或者補充的內容都會放到 support 庫中,注意 support 庫不是一個庫,它也有多個拆分,按需引入就可以了。比如,如果你需要上面的 Material Design 一些風格的庫,就可以引入 com.android.support:design 這個庫,這個裡面包括了所有與 Material Design 相關的控制元件內容。當然我還可以單獨引入具體的某個控制元件。再比如:support-v4 supoprt-v7 這些庫都是屬於 Android Support Library 庫的。

最初的時候 v4 v7 這些數字都是表示系統可以相容到 api 版本多少,比如 v4 表示可以相容到 api 4 對應的 Android 系統版本就是 1.6 。現如今這些早已過時了,從支援庫版本 26.0.0 (2017年7月)開始,對於大多數庫軟體包支援的最低 API 級別已經提升到 Android 4.0(API 14)了。所以 v4 這個數字的意義也不是原先的意義了。關於支援庫的更多內容:https://developer.android.com/topic/libraries/support-library?hl=zh-cn#api-versions

需要注意一點的是支援庫也是有對應的版本號的

一般新增支援庫的時候格式都是這樣的 implementation 'com.android.support:xxxx:版本號'

比如:

implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:appcompat-v7:26.1.0'

為了解決 support 上面的問題,在 2018 Google I/O 大會上推出了 AndroidX 來替換了 Android Support Library 。在 Android 9.0 (API級別 28) 正式釋出後,新版本的支援庫 AndroidX 就誕生了。它屬於 Jetpack,除了現有的支援庫以外,AndroidX 庫還包含了最新的 JetPack 元件,在 Api27及更早版本,依然可以使用 Support Library 但是之後新開發的所有庫都將在 AndroidX 庫中進行了。

因此 AndroidX 庫是 Support Library 庫的替換,在 API 28 及以後就要使用 AndroidX 庫來徹底替換 Support Library 庫了。注意千萬不要兩者都出現,一定要做到統一 這裡重磅推出 com.google.android.material:material:1.1.0 這個庫,這個庫就對應了我們上面介紹的 Material Designdesign 支援庫了,為什麼要單獨強調這個庫呢!因為這個新加的庫太強大了!可以認為是 design 庫的升級版,裡面的控制元件比之前design中的使用起來更加的順手!好了上面介紹那麼多主要是為了引入這個庫的。之後會詳細來說 material:material 這個庫的!

AndroidX 和 原先的 Support Library 都有對應的關係如上圖,具體看:https://developer.android.com/jetpack/androidx/migrate/artifact-mappings

關於 AndroidX 的版本號檢視:https://developer.android.com/jetpack/androidx/versions

最後注意:如果你的專案的 compileSdkVersion 是28的話,支援庫就別再用 Support Library 了,要換成 AndroidX 重中之重的是如果換成了 AndroidX 依賴後,裡面就千萬不要再出現 support 這樣的庫了