老是听到有人说AndroidX,到底什么是AndroidX?

本文同步发表于个人微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 便可关注,每一个工做日都有文章更新。android

Android技术迭代更新很快,各类新出的技术和名词也是层出不穷。不知从何时开始,老是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有不少朋友也会存在这样的疑惑,那么今天我就来写一篇科普文章,向你们介绍AndroidX的前世此生。web

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系统。它对应的包名以下:app

相似地,appcompat-v7指的是将库中提供的API向下兼容至API 7,也就是Android 2.1系统。它对应的包名以下:svg

能够发现,Android Support Library中提供的库,它们的包名都是以android.support.*开头的。操作系统

可是慢慢随着时间的推移,什么1.六、2.1系统早就已经被淘汰了,如今Android官方支持的最低系统版本已是4.0.1,对应的API版本号是15。support-v四、appcompat-v7库也再也不支持那么久远的系统了,可是它们的名字却一直保留了下来,虽然它们如今的实际做用已经对不上当初命名的缘由了。设计

那么很明显,Android团队也意识到这种命名已经很是不合适了,因而对这些API的架构进行了一次从新的划分,推出了AndroidX。所以,AndroidX本质上其实就是对Android Support Library进行的一次升级,升级内容主要在于如下两个方面。code

第一,包名。以前Android Support Library中的API,它们的包名都是在android.support.*下面的,而AndroidX库中全部API的包名都变成了在androidx.*下面。这是一个很大的变化,意味着之后凡是android.*包下面的API都是随着Android操做系统发布的,而androidx.*包下面的API都是随着扩展库发布的,这些API基本不会依赖于操做系统的具体版本。xml

第二,命名规则。吸收了以前命名规则的弊端,AndroidX全部库的命名规则里都不会再包含具体操做系统API的版本号了。好比,像appcompat-v7库,在AndroidX中就变成了appcompat库。

一个AndroidX完整的依赖库格式以下所示:

implementation 'androidx.appcompat:appcompat:1.0.2'

了解了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文件,这样即便迁移以后的代码出现了问题你还能够随时还原回以前的代码。

好了,关于AndroidX的内容就讲到这里,相信也是解决了很多朋友心中的疑惑。因为这段时间以来一直在努力赶《第一行代码 第3版》的进度,因此原创文章的数量偏少了一些,也请你们见谅。


关注个人技术公众号,每一个工做日都有优质技术文章推送。

微信扫一扫下方二维码便可关注: