本門藏經閣 - AndroidX

自盤谷開天闢地後,上古大神 Andy Rubin 開宗立派創立 Android 門,歷經數十載,宗門日漸壯大,門下弟子遍及整個九州大陸。坊間流傳,其門下弟子最善以身着格子襯衣,牛仔褲,背黑色雙肩包裝扮行走江湖,那其中的頭頂光滑鋥亮者更是其中的佼佼強者,修爲絕頂。android

本門藏經閣 - AndroidX

藏經閣,從來爲各大門派收藏本門絕學之所在。 本門亦不例外,這 AndroidX 中盡數收錄了宗門無上武功心法祕笈,其中多數源自宗門上古寶典支持庫( Support Library Packages ),通過歷代宗主不斷參悟,優化改進,現已造成一套完整修煉體系,爲門下弟子修行所用。後世如果有門人蔘透更高武學,亦將收錄於此,造福後世弟子。架構

好吧,接下來我要好好說話了,編不下去了......app

來自官方的解釋框架

AndroidX 是對原始 Android Support 庫( Support Library Packages )的重大改進。是 Android 團隊用於在 Jetpack 中開發,測試,打包,發佈和發佈庫的開源項目 。ide

PS: Support 庫 若是剛入門的同窗不知爲什麼物的話這邊簡單介紹一下。 Support 庫和 Android 操做系統是分開提供的,Support 庫提供了一系列的沒有內置在 Android 框架內的功能,包括向後兼容版本的新功能,框架中未包含的實用 UI 元素等如V4(android.support.v4),V7(android.support.v7)包。單元測試

看到這裏是否是仍是以爲一頭霧水,AndroidX 究竟是什麼 XX 啊。別急,下面會展開細說。看完相信衆位師兄弟們定能修爲有所精進,距離絕頂境界又進一步.學習

藏經閣中都有什麼 XX

AndroidX 中的全部軟件包都以字符串 androidx 開頭。原始 Support 庫包也已映射到相應的 androidx.* 包中。 如原始 Support 庫中的 com.android.support:appcompat-v7 包映射到 AndroidX 中爲 androidx.appcompat:appcompat:1.0.0 。包名變成以 androidx 開頭。 下表僅列部分原始支持庫遷移到 AndroidX 到映射表,大概瞭解一下就能夠了,只要知道以前使用到支持庫中的庫 AndroidX 都支持,如何使用下面會具體介紹,感興趣的同窗能夠去官網查看完整映射表測試

原始 Support 庫 AndroidX
com.android.support:support-compat androidx.core:core:1.0.0+
com.android.support:appcompat-v7 androidx.appcompat:appcompat:1.0.0+
com.android.support:design com.google.android.material:material:1.0.0+
com.android.support:multidex androidx.multidex:multidex:2.0.0+
com.android.support.test.espresso:espresso-accessibility androidx.test.espresso:espresso-accessibility:3.1.0
com.android.support.test:runner androidx.test:runner:1.1.0
com.android.support:cardview-v7 androidx.cardview:cardview:1.0.0
com.android.support:recyclerview-v7 androidx.recyclerview:recyclerview:1.0.0
com.android.support:viewpager androidx.viewpager:viewpager:1.0.0
android.arch.lifecycle:livedata androidx.lifecycle:lifecycle-livedata:2.0.0-rc01
com.android.support:support-fragment androidx.fragment:fragment:1.0.0+

除了對原始 Support 庫的映射和改進,後續新的 Support 庫的開發都將在 AndroidX 庫中進行,包括原始 Support 庫都維護和新引入的 Jetpack 組件。AndroidX 庫中的包大體能夠分爲如下三大類:gradle

  1. 測試組件

包含 AndroidX 中全部測試相關組件,若是你是個愛寫單元測試的寶寶,那在原始 Support 庫時代就必定用過相關的測試組件,沒用過的也不要緊,之後的項目中若是須要覆蓋單元測試甚至自動化測試,就必定會用到測試相關的組件。 AndroidX 中全部測試相關的組件都在 androidx.test.* 包下,如: androidx.test.runner,androidx.test.espresso優化

  1. 架構組件

即 Jetpack 相關組件。

  1. 其餘 AndroidX 組件

AndroidX 解決了什麼問題

前面說到 AndroidX 是對原始 Support 庫重大改進。那麼谷歌爸爸爲何在已經有了迭代了不少版本的 Support 庫的狀況下又整出一個新的 AndroidX 呢? 直白一點來講就是現有的 Support 庫愈來愈難用了:

  1. 隨着版本的迭代,須要作更多的兼容,Support 庫包的體積愈來愈臃腫,版本維護成本愈來愈高。
  2. 庫的功能不單一,每一個庫均是針對特定範圍的 Android 平臺和功能,如使用 android.support.v7.* 包,可能你的App只會用到其中的幾個庫,可是你須要將整個 V7 包都引入,這勢必會增長你的 App 體積和方法數等。
  3. 基於第二點緣由帶來的更新體驗更加難受,若是 Support 庫中更新了某個功能的新特性或修復了 bug 須要升級,又或是你的 targetsdk 須要變動,你的全部 android.supprot.* 相關的依賴所有都須要更新,牽一髮動全身這無疑是開發總最讓人腦闊疼的事了。

那麼 AndroidX 是如何解決以上問題的呢?

AndroidX 中的全部組件都是單獨維護和更新的。這樣作的好處就是全部組件功能更加單一,職責分明,更加易於維護和更新。咱們在使用時僅需引入咱們須要的組件,並且當某個組件發佈新的特性或者修復 bug,只需更新對應的組件便可,其餘組件不受影響。

AndroidX 如何使用

目前 Android 28.0.0穩定版使用的仍是 android.support.* ,建立新的項目默認使用的仍是 Support 庫。因此想體驗 AndroidX 的同窗能夠嘗試將本身的項目遷移至 AndroidX 。

PS:最新的 Support 庫版本是28.0.0穩定版(2018年9月21日更新),這將是 Support 更新的最後一個版本,這也是谷歌爸爸預留給開發者們遷移到 AndroidX 的時間,後續全部更新都將在 AndroidX 中進行。

來自官方的說明:

This is the stable release of Support Library 28.0.0 and is suitable for use in production. This will be the last feature release under the android.support packaging, and developers are encouraged to migrate to AndroidX.

OK,既然官方推薦並且 Support 庫也再也不更新了,沒啥好說的了,盤它!

準備工做

1. Android Studio 升級到3.2.0 Canary 14以上版本

2. gradle 版本升到3.2.0以上

classpath 'com.android.tools.build:gradle:3.2.1'
複製代碼

3. compileSdkVersion 升到28以上

compileSdkVersion 28
 defaultConfig {
      targetSdkVersion 28
  }
複製代碼

4. gradle.properties 文件配置 若是你是在一個新的項目中須要使用 AndroidX ,.gradle.properties 文件中這樣配置:

android.enableJetifier=true
android.useAndroidX=true
複製代碼

若是你想在一個現有的項目中體驗 AndroidX ,可是以前使用的庫不遷移的話, .gradle.properties 文件中這樣配置:

android.enableJetifier=false
android.useAndroidX=true
複製代碼

一鍵遷移

Android Studio 3.2.0 Canary 14及以上版本提供了方便快捷的一鍵遷移到 AndroidX 的功能。在菜單上選擇 Refactor->Migrate to AndroidX 便可完成遷移。

注意: 若是準備工做第三點中你的 compileSdkVersion 沒有升到28及以上點擊 「Migrate to AndroidX」 會提示:

寫在最後

關於 AndroidX 的前因後果以及如何使用就介紹到這裏啦!最後再總結一下: 原始 Support 庫谷歌爸爸最終只更新到28.0.0版本,後續將再也不更新,全部的新功能開發都將在 AndroidX 中進行。僅憑這一點咱們就須要趕忙學起來了,雖然技術的更迭節奏讓咱們眼花繚亂,明明剛出的還沒學完又出新花樣,但正是技術的不斷更迭才帶來技術的不斷進步,咱們在學習新技術的同時也是讓本身變得更好的過程,從咱們踏進這個門,選擇這條路的時候開始,就已經作好了終身學習的準備了。世界在變,咱們須要作的就是享受變化,擁抱變化!(猝不及防來了一波雞湯)。

電光火石間,宗門重地藏經閣金頂三道天雷降下,將這夜映的如白晝通常,頓時間狂風掃落葉,烏雲壓金頂!忽然,一道金光奪窗而出,直奔天雷御劍而去。得見此景弟子的們都在大喊「快看!快看!藏經閣飛出一個頭頂冒金光的人,往天雷飛去了」。而此時站在山頂的宗主則微微一笑,他知道這是門下又一弟子習得藏經閣中上乘功法至絕頂境界了,那一頭的金光正是絕頂境界!

相關文章
相關標籤/搜索