目录
Android 支持库
Android Support Library
AndroidX
如何迁移老项目到 AndroidX?
支持库的作用
Android 支持库
Android 支持库是每个Android 应用程序中必不可少的一部分,你会发现它们无处不在。支持库为开发人员提供了将 Android 的最新和最强大功能添加到应用程序的能力,同时保持与旧版本Android 的向后兼容性。
Google 为了在低版本中兼容高版本中新加的控件、布局和一些主题,甚至一些重要组件的生命周期及重要方法(如 Fragment 的 Attached, 在 API 23 中加入,需要使用兼容的 Fragment),而推出了兼容包,方便开发人员在较低版本中适配或者使用高版本的效果,简单的说就是用于提供向下兼容的功能。
Android 3.0 的时候,Google 团队推出了 Android Support Library 支持库,以便提供向下兼容的功能。从 support-v4 到 appcompat-v7 再到 support-v13 到最后的 support-v17。随着 Android 官方支持的最低系统版本不断提供,support-v4 和 appcompat-v7 库将不再支持老版本系统。
Android 9.0(API 级别 28) 发布后,新版本支持库 AndroidX 也随之诞生,它属于 Jetpack 的一部分。除了现有的支持库,AndroidX 库还包含最新的 Jetpack 组件。
您可以继续使用此支持库以往的工作(这里指的是打包为 android.support.* 的 27 版及更早版本)在 Google Maven 中仍然可用。不过,所有新库的开发都将在 AndroidX 库中运行。
Google 建议在所有新项目中使用 AndroidX 库。您还可以考虑将现有项目迁移的 AndroidX。
随着 Android 系统版本的不断迭代更新,每个版本中都会加入很多新的 API 进去,但是新增的 API 在老版本系统中并不存在,因此这就出现了一个向下兼容的问题。
Android Support Library
当 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 和 appcompat-v7 是什么意思呢?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 库也不再支持那么久远的系统了,但是它们的名字还是保留了下来。
AndroidX
很明显,Android 团队也意识到这种命名已经非常不合适了,于是对这些 API 的架构进行了一次重新的划分,推出了 AndroidX。因此,AndroidX 本质上其实就是对 Android Support Library 进行的一次升级。升级的内容主要有以下两个方面:
包名。之前 Android Support Library 中的 API,它们的包名都是在 android.support.* 下面的,而 AndroidX 库中的所有 API 的包名都变成了在 androidx.* 下面,这意味着 androidx.* 下面的 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, ViewPager2 等库,在 AndroidX 中都会有一个对应的版本,只要改一下包名就可以使用了,使用方法基本上与之前没有任何变化。
注意:不建议 AndroidX 和 Android Support Library 库混合使用,着可能会导致很多不兼容问题。
Android 团队官方也明确表示,慢慢的将会对 Android Support Library 停止维护,所有不建议继续使用。
如何迁移老项目到 AndroidX?
如果从 Android Support Library 迁移到 AndroidX 是不需要手动改包名的,Android Studio 提供了一个一键迁移的功能。步骤如下:
项目名右键 --> Refactor --> Migrate to AndroidX
然后在弹出的窗口中点击 Migrate,Android Studio 就会自动检测你项目中所有使用 Android Support Libraray 的地方,并将它们全部改成 AndroidX 中对应的库。并且 Android Studio 还会将原来的项目自动备份一份 zip 文件,这样即使迁移之后代码出了问题,还可以找回之前的代码。
支持库的作用
支持库的主要用途如下:
新版 API 的向后兼容性。大量的支持库都为教新的框架类和方法提供向后兼容性。例如,Fragment 支持类为搭载 Android 3.0(API 11) 之前版本设备中的 Fragment 提供支持。
工具类和辅助类。支持库提供了很多辅助类,特别是针对界面开发。例如,RecyclerView 类提供了一个界面微件,用于显示和管理超长列表,并可在 API 7及更高版本的 Android 系统中使用。
调式和实用工具。很多功能可以提供您集成到应用中的代码所不具备的实用工具,包括 support animations 库,它改进了对方法输入进行的代码 Lint 检测,以及多 dex 处理支持,用于通过 65536 种以上的方法配置和分发应用。
参考博客:
蜗牛的小梦想 的 csdn
mayundoyouknow 的csdn