总是听到有人说 AndroidX,还有人不知道什么是 AndroidX 的吗?(1)
![](https://static001.geekbang.org/infoq/d7/d70228cc6b8b8d2d30c102b5d04c6165.png)
可以发现,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 架构了。
![](https://static001.geekbang.org/infoq/07/075a1d7a482348e0fe17650125628baf.png)
老项目的迁移
那么对于老项目的迁移应该怎么办呢?由于涉及到了包名的改动,如果从 Android Support Library 升级到 AndroidX 需要手动去改每一个文件的包名,那可真得要改死了。为此,Android Studio 提供了一个一键迁移的功能,只需要对着你的项目名右击 → Refactor → Migrate to AndroidX,就会弹出如下图所示的窗口。
![](https://static001.geekbang.org/infoq/10/100f15a9b9c48680cccb884ed9b6f69e.png)
这里点击 Migrate,Android Studio 就会自动检查你项目中所有使用 Android Support Library 的地方,并将它们全部改成 AndroidX 中对应的库。另外 Android Studio 还会将你原来的项目备份成一个 zip 文件,这样即使迁移之后的代码出现了问题你还可以随时还原回之前的代码。
好了,关于 AndroidX 的内容就讲到这里,相信也是解决了不少朋友心中的疑惑。
最后
Android 学习是一条漫长的道路,但是“千里之行始于足下”,愿你我共勉。
我把自己这段时间整理的 Android 最重要最热门的学习方向资料放在了**我的GitHub:https://github.com/xieyuliang/Android-P7-share/blob/master/Android%E5%BC%80**,里面还有不同方向的自学编程路线、面试题集合/面经、及系列技术文章等。
资源持续更新中,欢迎大家一起学习和探讨。
评论