写点什么

总是听到有人说 AndroidX,还有人不知道什么是 AndroidX 的吗?

用户头像
Android架构
关注
发布于: 9 小时前

前言

Android 技术迭代更新很快,各种新出的技术和名词也是层出不穷。不知从什么时候开始,总是会时不时听到 AndroidX 这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么今天我就来写一篇科普文章,向大家介绍 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。那么 supp


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


ort-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'

总结

了解了 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架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
总是听到有人说AndroidX,还有人不知道什么是AndroidX的吗?