歷史角度看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
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 Design
的 design
支援庫了,為什麼要單獨強調這個庫呢!因為這個新加的庫太強大了!可以認為是 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 這樣的庫了