Android---AndroidX

news2024/11/16 21:27:36

目录

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 进行的一次升级。升级的内容主要有以下两个方面:

\bullet 包名。之前 Android Support Library 中的 API,它们的包名都是在 android.support.* 下面的,而 AndroidX 库中的所有 API 的包名都变成了在 androidx.* 下面,这意味着 androidx.* 下面的 API 都是随着 Android 操作系统发布的,而 androidx.* 包下面的 API 都是随着扩展库发布的,这些 API 基本不会依赖于操作系统的具体版本。

\bullet 命名规则。汲取了之前命名规则的弊端,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 文件,这样即使迁移之后代码出了问题,还可以找回之前的代码。

支持库的作用

 支持库的主要用途如下:

\bullet 新版 API 的向后兼容性。大量的支持库都为教新的框架类和方法提供向后兼容性。例如,Fragment 支持类为搭载 Android 3.0(API 11) 之前版本设备中的 Fragment 提供支持。

\bullet 工具类和辅助类。支持库提供了很多辅助类,特别是针对界面开发。例如,RecyclerView 类提供了一个界面微件,用于显示和管理超长列表,并可在 API 7及更高版本的 Android 系统中使用。

\bullet 调式和实用工具。很多功能可以提供您集成到应用中的代码所不具备的实用工具,包括 support animations 库,它改进了对方法输入进行的代码 Lint 检测,以及多 dex 处理支持,用于通过 65536 种以上的方法配置和分发应用。 

参考博客:

蜗牛的小梦想 的 csdn

 mayundoyouknow 的csdn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《最重要的事,只有一件》笔记——目标不是做得更多,而是让自己需要的事情更少

目录 一、引言 二、书中摘要 1、只做一件事、一次只做一件事 2、专心于一件事不那么容易 3、我们不可能同时专注于两件事 4、平衡工作与生活是无稽之谈 5、怎么做 6、成功的习惯-围绕着你的终极目标 7、找到投入的意义 8、确定优先事务-这要看你目前和将来的打算 9、…

【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器

FLAN: 微调语言模型是Zero-Shot学习器《Finetuned Language Models are Zero-shot Learners》论文地址:https://arxiv.org/abs/2109.01652 相关博客 【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器 【自然语言处理】【ChatGPT系列】…

R语言geodetector包基于栅格图像实现地理探测器操作

本文介绍基于R语言中的geodetector包,依据多张栅格图像数据,实现地理探测器(Geodetector)操作的详细方法。 需要说明的是,在R语言中进行地理探测器操作,可以分别通过geodetector包、GD包等2个包实现。其中&…

react18+eslint+prettier 配置

新建项目 create-react-app.cmd react18 --template typescript配置别名 安装 craco npm install craco/craco -D新建 craco.config.js const path require("path"); const resolve (dir) > path.resolve(__dirname, dir); module.exports {// 配置别名web…

Kubernetes:Service

文章目录1、Service 定义1.1、无选择符的服务1.2、Endpoints2、服务发布类型2.1、ClusterIP2.2、NodePort2.3、ExternalName2.4、loadbalancer3、无头服务3.1、有选择符的服务3.2、无选择符的服务4、服务发现4.1、环境变量4.2、DNS5、Service TLSService:将运行在一…

力扣(LeetCode)1801. 积压订单中的订单总数(C++)

优先队列模拟 根据题目描述模拟。 如果该订单是一笔采购订单 buy ,则可以查看积压订单中价格 最低 的销售订单 sell 。提示我们,建立小根堆,维护价格最低的销售订单sell 。 反之亦然,如果该订单是一笔销售订单 sell ,…

【技术分享】戴尔工作站安装Win10+Ubuntu20.04双系统教程与避坑指南

文章目录引言1.安装前的几个注意事项(避坑指南)1.1.有多块硬盘,该如何分配给Win10和Ubuntu系统?1.2.Ubuntu分区应该怎么分?2.系统安装步骤2.1.下载系统镜像2.2.制作U盘启动盘2.3.进入Win10系统分配系统空间2.4.BIOS设置…

强力推荐:关于谷歌ChatGPT模型140个示例的展示与实现功能

目录 1、ChatGPT 介绍与使用简要介绍安装ChatGPT与使用想写出有效的问答吗?使用 ChatGPT 桌面应用程序使用 prompts.chat2、ChatGPT模型140个示例充当 Linux 终端充当英语翻译和改进者担任`position`面试官充当 JavaScript 控制台充当 Excel 工作表充当英语发音帮手充当旅游指…

【C++】bitset(位图)的模拟实现

目录 一、bitset接口介绍 二、bitset的实现 1. 构造函数 2. 设置位&#xff08;set&#xff09; 3. 清空位&#xff08;reset&#xff09; 4. 获取位的状态&#xff08;test&#xff09; 三、源代码 一、bitset接口介绍 #include <iostream> #include <vecto…

Fujian Medical insurance and pension for urban and rural residents

【城乡居民医保、养老】二维码缴纳步骤&#xff0c;本文仅仅辅助需要人士&#xff0c;可忽略 第一步&#xff0c;长按二维码 第二步&#xff0c;点击【识别图中二维码】 第三步&#xff1a;个人社&#xff08;医&#xff09;保办费页面&#xff0c;点击【个人社&#xff08;医&…

一次 SQL 查询优化原理分析

一&#xff0c;前言 证实 参考资料 有一张财务流水表&#xff0c;未分库分表&#xff0c;目前的数据量为9555695&#xff0c;分页查询使用到了limit&#xff0c;优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms)&#xff0c;按照下文的方式调整SQL…

连接表「INNER JOIN」「LEFT JOIN」「RIGHT JOIN」+ 多表查询

目录表关联执行顺序 及 原理第一步、做笛卡尔积第二步&#xff1a;根据ON后的连接条件筛选笛卡尔积的结果第三步&#xff1a;补充左表&#xff08;LEFT JOIN&#xff09;或右表&#xff08;RIGHT JOIN&#xff09;不满足连接条件的数据&#xff08;INNER JOIN内关联时无此步骤&…

CMOS门电路总结

目录 MOS管&#xff1a; CMOS组成的常见门电路 反相器&#xff08;非门&#xff09;&#xff1a; 与非门 或非门 OD门 三态门 MOS管简介&#xff1a; > NMOS: 漏极&#xff08;D&#xff09;入&#xff0c;源极&#xff08;S&#xff09;出&#xff0c;栅极(G)加正电压…

【MyBatis】级联处理、association、collection、分布查询(详细模板,可直接套用)

目录 示例 一、处理“多对一”映射关系 1.1、级联查询 1.2、association 1.3、分步查询 二、处理“一对多”映射关系 2.1、collection 2.2、分步查询 示例 例如&#xff1a;员工与部门表 员工&#xff1a; 部门&#xff1a; 解释&#xff1a; 两张表通过dept_id联系起来…

ubuntu22.04安装MySQL、Hive及Hive连接MySQL操作

前言 这篇文章主要讲述的是ubuntu22.04上数据仓库Hive的安装和使用 正文 建议按照文章实践前稍微通读下全文 安装MySQL服务端和客户端 相关命令&#xff1a; sudo apt-get install mysql-server sudo apt-get install mysql-client 修改mysql的配置文件 在终端中输入…

手撕LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…

python虚拟环境的概念,操作(pycharm为例)

1.在PyCharm中创建python项目时&#xff0c;需要配置python的运行环境&#xff0c;除了使用系统现有环境以外&#xff0c;还可以创建虚拟环境。 2.虚拟环境的创建是因为在实际开发中需要同期用到不同版本的python解释器&#xff0c;不同的第三方库以及同一个第三方库的不同版本…

牛客网 字符串通配符

做题链接&#xff1a;字符串通配符__牛客网 (nowcoder.com)要求&#xff1a;实现如下2个通配符(不区分大小写)&#xff1a; * &#xff1a;匹配0个或以上的字符&#xff08;注&#xff1a;能被*和?匹配的字符仅由英文字母和数字0到9组成&#xff0c;下同&#xff09;&#…

【回看2022 展望2023】一个普通大学生的2022回忆录

目录 一、前言 二、回望2022 2022年1月 2022年2月 2022年3月 2022年4月5月6月7月8月 2022年9月 2022年10月 2022年11月 2022年12月 三、总结与期望 结语 期望 一、前言 虽然我在csdn上已经有2年的码龄了&#xff0c;但我是从2021年4月才开始写我的第一篇博客。其实从学…

Cache实现

Cache&#xff08;S,E,B,m&#xff09;&#xff1a; S&#xff1a;每个set包含一个或者多个cache line&#xff08;高速缓冲行&#xff09; cache line&#xff1a;分别包含有效位&#xff08;valid&#xff09;、标记&#xff08;tag&#xff09;、数据块&#xff08;cache b…