为什么会有AndroidX和android.support.*支持库?

在开发支持多个 API 版本的应用时,您可能需要一种标准的方法,以便对早期版本的 Android 系统提供新功能,或者优雅地回退到等效的功能。您可以利用这些库提供相应的兼容性层,而无需编译代码来处理早期版本的平台。此外,支持库还提供标准 Framework API 中未提供的额外的工具类和功能,使您能更轻松地面向更多设备进行开发和提供支持。

Android 支持库最初是适用于各种应用的单个二进制库,如今它已经发展为一套用于应用开发的库。现在,其中很多库在应用开发过程中即使不是必需的,我们也强烈推荐使用。

AndroidX是什么?

androidx 命名空间中的工件包含 Android Jetpack 库。与支持库一样,androidx 命名空间中的库与 Android 平台分开提供,并向后兼容各个 Android 版本。

AndroidX 对原始 Android 支持库进行了重大改进,后者现在已不再维护。androidx 软件包完全取代了支持库,不仅提供同等的功能,而且提供了新的库。

AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有变化。

AndroidX 还包括以下功能

  • AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。
  • 与支持库不同,androidx 软件包会单独维护和更新。从版本 1.0.0 开始,androidx 软件包使用严格的语义版本控制。您可以单独更新项目中的各个 AndroidX 库。
  • 版本 28.0.0 是支持库的最后一个版本。我们将不再发布 android.support 库版本。所有新功能都将在 androidx 命名空间中开发。

注意事项:

  • 执行迁移之前,请先将应用更新到最新版本。我们建议您将项目更新为使用支持库的最终版本:版本 28.0.0。这是因为,1.0.0 版本的 AndroidX 工件是与支持库 28.0.0 工件等效的二进制文件。
  • Android 9.0(API 级别 28)发布后,新版支持库 AndroidX 也随之诞生,它属于 Jetpack。除了现有的支持库,AndroidX 库还包含最新的 Jetpack 组件。 
  • 您可以继续使用此支持库以往的工件(这里指的是版本 27 及更早版本,且已打包为 android.support.*)在 Google Maven 中仍然可用。不过,所有新库的开发都将在 AndroidX 库中进行。

为什么将支持库android.support.*替换为AndroidX?

(android.support.*)部分支持库软件包的名称会指示其最初支持的最低 API 级别。这些名称使用 v# 表示法,例如 support-v4 软件包。从支持库版本 26.0.0(2017 年 7 月发布)开始,所有支持库软件包所支持的最低 API 级别已更改为 Android 4.0(API 级别 14)。

因此,在使用任何最新版本的支持库时,您不应假设 v# 软件包表示法会指示最低 API 支持级别。最新版本中的这项更改还意味着,名称为 v4 和 v7 的库软件包与其支持的最低 API 级别本质上等效。例如,对于 26.0.0 及更高版本的支持库,support-v4 和 support-v7 软件包支持的最低 API 级别均为 14。

那么很明显,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'

支持库的用途

支持库有一些独特的用途,而针对平台早期版本的向后兼容性类只是其中之一。下表完整列出了支持库在应用中的用途:

  • 新版 API 的向后兼容性 - 大量的支持库都为较新的框架类和方法提供向后兼容性。例如,Fragment 支持类为搭载 Android 3.0(API 级别 11)之前版本的设备中的 Fragment 提供支持。
  • 工具类和辅助类 - 支持库提供了很多辅助类,特别是针对界面开发。例如,RecyclerView 类提供了一个界面微件,用于显示和管理超长列表,并可在 API 级别 7 及更高版本的 Android 系统中使用。
  • 调试和实用工具 - 很多功能可以提供您集成到应用中的代码所不具备的实用工具,包括 support-annotations 库,它改进了对方法输入进行的代码 Lint 检查;以及多 dex 处理支持,用于通过 65536 种以上的方法配置和分发应用。

参考:

AndroidX概览

https://developer.android.google.cn/jetpack/androidx

迁移到 AndroidX

https://developer.android.google.cn/jetpack/androidx/migrate

其他

https://blog.csdn.net/guolin_blog/article/details/97142065

AndroidX是什么?相关推荐

  1. Androidx CoordinatorLayout 和 AppBarLayout 实现折叠效果(通俗的说是粘性头效果)

    Androidx  CoordinatorLayout 和 AppBarLayout 实现折叠效果 或者 说是粘性头效果 先看下面是不是你需要的结果  大致顺序是先滚动整体,然后折叠 在滚动list ...

  2. Android:你好,androidX!再见,android.support

    190325 补充:莫名问题的解决 181106 补充:修改未迁移成功的三方库 1.AndroidX简介 点击查看Android文档中对androidx的简介 按照官方文档说明 androidx 是对 ...

  3. [Android Pro] AndroidX重构和映射

    原文地址:https://developer.android.com/topic/libraries/support-library/refactor https://blog.csdn.net/ch ...

  4. androidx和android的区别,【译】使用AndroidX代替Android支持库

    今天,我们发布一个新的Android扩展库(AndroidX)的早期预览版,这表示了支持库的一个新的时代.请为这些变化提出你们的反馈.既然这是一个早期的预览版本,我们并不建议放在生产环境尝试这些功能, ...

  5. Android Studio androidx 包冲突解决方法

    Android Studio androidx 包冲突解决方法 参考文章: (1)Android Studio androidx 包冲突解决方法 (2)https://www.cnblogs.com/ ...

  6. android androidx版本,Android AndroidX 简介与迁移

    AndroidX 简介 AndroidX 是 Android 团队用于在 Jetpack 中开发,测试,打包,版本和发布库的开源项目 . AndroidX 是对原始 Android Support L ...

  7. 【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )

    文章目录 一.报错信息 二.问题分析 一.报错信息 从 DEX 文件加载 Activity 组件 , 运行时报如下错误 ; 2021-12-12 14:02:52.432 5342-5342/com. ...

  8. androidx使用FileProvider适配安卓7

    前言 安卓7版本后,需要适配获取本地uri,否则会报错,之前用的android support库,可以参考这篇文章<点击查看> 但是现在使用了androidx后,发现清单文件中配置不一样了 ...

  9. AndroidStudio中提示:This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is

    场景 Android Studio中在新建项目时勾选了 Use legacy android.support licrary 然后在运行项目时提示: This project uses Android ...

  10. Androidx ViewPager+Fragment 懒加载

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/113545036 本文出自[赵彦军的博客] 目录 前言 懒加载(预加载) 传统模式 ...

最新文章

  1. Java 洛谷 P1307 数字反转
  2. Neumorphism新拟物化控件设计灵感
  3. 为什么我们需要域?MS Active Directory系列之一
  4. Underscore js是一个JavaScript实用库
  5. 今天我必须要全网曝光这几个公众号
  6. 企业信息化政务信息化浙里办
  7. 看Panasonic EZ0l21充电器有感
  8. Xilinx FPGA配置clocking时钟动态相位输出
  9. Python 函数的使用和内嵌函数
  10. 电脑版桌面云便签账号怎么绑定微信或解绑微信?
  11. 编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,现有百钱欲买百鸡,共有多少种买法?
  12. S7-1200PLC通过增量式编码器实现速度采集和模拟量采集
  13. 计算机科学丛书收藏,计算机科学丛书:机器学习
  14. 通过Ping检测网络故障的典型次序和IPconfig命令的使用
  15. Java枚举—枚举进阶
  16. 一句话证明:费马大定理
  17. 气象数据的可视化展现形式
  18. 非正常情况下的移动加权平均算法
  19. 4000多家沪深上市公司专利数据库(2010-2021年)
  20. 星际争霸2 人族两船兵笔记

热门文章

  1. Beijing Thwarts Coke's Takeover Bid
  2. 智能陈桥输入法软件测试,智能陈桥输入法无法使用.怎么办?
  3. Excel 公式复制同步到其他单元格
  4. 一文读懂蓝绿发布、A/B 测试和金丝雀发布的优缺点
  5. earth orientation parameter(EOP)地球指向参数
  6. 在线免费caj转Word,不用安装软件
  7. 计算机是1946年由科学家发明,1946年第一台计算机叫什么
  8. IDEA中Debugger的使用
  9. 基于Ubuntu 18.04打造嵌入式arm开发环境
  10. TI DSP实时操作系统