總是聽到有人說AndroidX,到底什麼是AndroidX?

Android技術迭代更新很快,各種新出的技術和名詞也是層出不窮。不知從什麼時候開始,總是會時不時聽到AndroidX這個名詞,這難道又是什麼新出技術嗎?相信有很多朋友也會存在這樣的疑惑,那麼今天我就來寫一篇科普文章,向大家介紹AndroidX的前世今生。

Android系統在剛剛面世的時候,可能連它的設計者也沒有想到它會如此成功,因此也不可能在一開始的時候就將它的API考慮的非常周全。隨着Android系統版本不斷地迭代更新,每個版本中都會加入很多新的API進去,但是新增的API在老版系統中並不存在,因此這就出現了一個向下兼容的問題。

舉個例子,當Android系統發佈到3.0版本的時候,突然意識到了平板電腦的重要性,因此爲了讓Android可以更好地兼容平板,Android團隊在3.0系統(API 11)中加入了Fragment功能。但是Fragment的作用並不只侷限於平板,以前的老系統中也想使用這個功能該怎麼辦?於是Android團隊推出了一個鼎鼎大名的Android Support Library,用於提供向下兼容的功能。比如我們每個人都熟知的support-v4庫,appcompat-v7庫都是屬於Android Support Library的,這兩個庫相信任何做過Android開發的人都使用過。

但是可能很多人並沒有考慮過support-v4庫的名字到底是什麼意思,這裏跟大家解釋一下。4在這裏指的是Android API版本號,對應的系統版本是1.6。那麼support-v4的意思就是這個庫中提供的API會向下兼容到Android 1.6系統。它對應的包名如下:

類似地,appcompat-v7指的是將庫中提供的API向下兼容至API 7,也就是Android 2.1系統。它對應的包名如下:

可以發現,Android Support Library中提供的庫,它們的包名都是以android.support.*開頭的。

但是慢慢隨着時間的推移,什麼1.6、2.1系統早就已經被淘汰了,現在Android官方支持的最低系統版本已經是4.0.1,對應的API版本號是15。support-v4、appcompat-v7庫也不再支持那麼久遠的系統了,但是它們的名字卻一直保留了下來,雖然它們現在的實際作用已經對不上當初命名的原因了。

那麼很明顯,Android團隊也意識到這種命名已經非常不合適了,於是對這些API的架構進行了一次重新的劃分,推出了AndroidX。因此,AndroidX本質上其實就是對Android Support Library進行的一次升級,升級內容主要在於以下兩個方面。

第一,包名。之前Android Support Library中的API,它們的包名都是在android.support.*下面的,而AndroidX庫中所有API的包名都變成了在androidx.*下面。這是一個很大的變化,意味着以後凡是android.*包下面的API都是隨着Android操作系統發佈的,而androidx.*包下面的API都是隨着擴展庫發佈的,這些API基本不會依賴於操作系統的具體版本。

第二,命名規則。吸取了之前命名規則的弊端,AndroidX所有庫的命名規則裏都不會再包含具體操作系統API的版本號了。比如,像appcompat-v7庫,在AndroidX中就變成了appcompat庫。

一個AndroidX完整的依賴庫格式如下所示:

implementation 'androidx.appcompat:appcompat:1.0.2'
  • 1

瞭解了AndroidX是什麼之後,現在你應該放輕鬆了吧?它其實並不是什麼全新的東西,而是對Android Support Library的一次升級。因此,AndroidX上手起來也沒有任何困難的地方,比如之前你經常使用的RecyclerView、ViewPager等等庫,在AndroidX中都會有一個對應的版本,只要改一下包名就可以完全無縫使用,用法方面基本上都沒有任何的變化。

但是有一點需要注意,AndroidX和Android Support Library中的庫是非常不建議混合在一起使用的,因爲它們可能會產生很多不兼容的問題。最好的做法是,要麼全部使用AndroidX中的庫,要麼全部使用Android Support Library中的庫。

而現在Android團隊官方的態度也很明確,未來都會爲AndroidX爲主,Android Support Library已經不再建議使用,並會慢慢停止維護。另外,從Android Studio 3.4.2開始,我發現新建的項目已經強制勾選使用AndroidX架構了。

那麼對於老項目的遷移應該怎麼辦呢?由於涉及到了包名的改動,如果從Android Support Library升級到AndroidX需要手動去改每一個文件的包名,那可真得要改死了。爲此,Android Studio提供了一個一鍵遷移的功能,只需要對着你的項目名右擊 → Refactor → Migrate to AndroidX,就會彈出如下圖所示的窗口。

這裏點擊Migrate,Android Studio就會自動檢查你項目中所有使用Android Support Library的地方,並將它們全部改成AndroidX中對應的庫。另外Android Studio還會將你原來的項目備份成一個zip文件,這樣即使遷移之後的代碼出現了問題你還可以隨時還原回之前的代碼。

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