【Jetpack Compose】BOM是什么?

news2025/2/25 15:15:37

前言

本篇旨在帮助小伙伴们了解和使用Compose中BOM相关的知识,在Compose的开发过程中更加便捷、统一的管理相关依赖信息。

BOM基础知识

Compose推出的BOM为物料清单的意思,BOM全称为Bill Of Materials,Compose推出BOM的意义旨在通过指定的BOM版本来管理所有Compose库版本,比如我们要添加compose.material3和compose.ui的依赖,在未使用BOM的前提下,我们需要找到对应的版本,然后再添加依赖;然而在使用BOM的情况下,我们可以不用再去查找依赖对应的版本,直接在dependencies{}中添加他们就行,下面我们来详细看看BOM的使用方法。

BOM最早在2022/10/24推出了第一个版本:androidx.compose.compose-bom-2022.10.00

截止目前已经推出了16个版本,最新版本为:androidx.compose.compose-bom-2023.10.00

很巧合第一个和目前的最新版本尾部都是10.00,哈哈😄

目前使用AS版本为: Android Studio Giraffe | 2022.3.1 Patch 1 ,不同版本可能表现不一致

使用ComposeBOM

目前我们使用AS创建一个Compose项目之后,在app/build.gradle中默认会添加BOM依赖,但是版本会比较陈旧

图中标红的就是添加BOM的方式,添加的是2023.03.00版本,目前BOM最新2023.10.00,在10月05日发布。

知晓了BOM的添加方式之后,我们再来看看下面关于Compose相关依赖是如何添加的,比如标红下方的compose.ui依赖是直接通过implementation("androidx.compose.ui:ui")添加,这一行并没有涉及到版本信息,却也能正常引入compose.ui相关依赖

上图就是引入的compose.ui相关依赖库,在没有声明具体版本的情况下,也可以通过BOM获取到对应的版本,compose.ui在指定的BOM版本都有对应的版本,此处BOM的2023.03.00对应ui库的1.4.0版本。文章的后面我会将所有BOM版本对应的Compose依赖版本映射关系列举出来,方便大家日后参照。

到这小伙伴们是不是有种疑问,如果我添加了BOM依赖,是不是不用再额外添加其它的Compose库,非也非也~即使你添加了BOM依赖,还是得显式的添加下其它你需要的依赖,只是在依赖信息中省略了版本号而已。如果添加BOM就将所有的Compose库都引入到工程中,那么会造成依赖浪费的情况。

BOM和显式添加版本号是否冲突

在上面我们了解去如何去使用BOM的知识,接下来我们再看看在添加了BOM的情况下,再显式的添加其它依赖并加上版本号的情况。详细看下面的代码示例:

implementation(platform("androidx.compose:compose-bom:2023.03.00"))
implementation("androidx.compose.ui:ui:1.5.3")

我们先引入2023.03.00的BOM版本,然后在显式的添加compose.ui:1.5.3的依赖库,这是大家想一下会造成何种结果呢?此版本BOM清单中ui库对应的版本应该是1.4.0,会不会将我们需要的1.5.3直接忽视采用BOM对应的版本呢?答案是否的,在这种情况下Gradle会采用我们显式声明的ui库版本号,这样我们就既可以统一的管理Compose的版本信息,又不用过度受BOM的版本限制。下面是上述代码的依赖情况:

UI相关依赖版本号都变成了1.5.3,其余的还是保持BOM映射的版本号。

BOM所有版本

  1. androidx.compose.compose-bom-2022.10.00
  2. androidx.compose.compose-bom-2022.11.00
  3. androidx.compose.compose-bom-2022.12.00
  4. androidx.compose.compose-bom-2023.01.00
  5. androidx.compose.compose-bom-2023.03.00
  6. androidx.compose.compose-bom-2023.04.00
  7. androidx.compose.compose-bom-2023.04.01
  8. androidx.compose.compose-bom-2023.05.00
  9. androidx.compose.compose-bom-2023.05.01
  10. androidx.compose.compose-bom-2023.06.00
  11. androidx.compose.compose-bom-2023.06.01
  12. androidx.compose.compose-bom-2023.08.00
  13. androidx.compose.compose-bom-2023.09.00
  14. androidx.compose.compose-bom-2023.09.01
  15. androidx.compose.compose-bom-2023.09.02
  16. androidx.compose.compose-bom-2023.10.00

BOM版本映射关系

库组版本 (2022.10.00)版本 (2022.11.00)版本 (2022.12.00)版本 (2023.01.00)版本 (2023.03.00)版本 (2023.04.00)版本 (2023.04.01)版本 (2023.05.00)版本 (2023.05.01)和 (2023.06.00)版本 (2023.06.01)版本 (2023.08.00)版本 (2023.09.00)版本 (2023.09.01)版本 (2023.09.02)版本 (2023.10.00)
androidx.compose.animation:animation1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.animation:animation-core1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.animation:animation-graphics1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.foundation:foundation1.3.01.3.11.3.11.3.11.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.foundation:foundation-layout1.3.01.3.11.3.11.3.11.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.material:material1.3.01.3.11.3.11.3.11.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.material:material-icons-core1.3.01.3.11.3.11.3.11.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.material:material-icons-extended1.3.01.3.11.3.11.3.11.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.material:material-ripple1.3.01.3.11.3.11.3.11.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.material3:material31.0.01.0.11.0.11.0.11.0.01.0.11.0.11.0.11.1.01.1.11.1.11.1.11.1.21.1.21.1.2
androidx.compose.material3:material3-window-size-class1.0.01.0.11.0.11.0.11.0.01.0.11.0.11.0.11.1.01.1.11.1.11.1.11.1.21.1.21.1.2
androidx.compose.runtime:runtime1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.runtime:runtime-livedata1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.runtime:runtime-rxjava21.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.runtime:runtime-rxjava31.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.runtime:runtime-saveable1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-geometry1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-graphics1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-test1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-test-junit41.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-test-manifest1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-text1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-text-google-fonts1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-tooling1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-tooling-data1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-tooling-preview1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-unit1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-util1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3
androidx.compose.ui:ui-viewbinding1.3.01.3.11.3.21.3.31.4.01.4.11.4.21.4.31.4.31.4.31.5.01.5.11.5.11.5.21.5.3

列举了BOM从第一个版本到目前最新版本的映射关系,后续BOM更新了我也会及时的将这张表格做响应的更新,希望小伙伴们喜欢哈~

写在最后

BOM在使用过程中还是比较容易上手的,也是极大程度上帮助开发者更轻松的管理Compose相关依赖信息,感兴趣的小伙伴们赶紧上手体验下吧~

Android 学习笔录

Android 性能优化篇:https://qr18.cn/FVlo89
Android Framework底层原理篇:https://qr18.cn/AQpN4J
Android 车载篇:https://qr18.cn/F05ZCM
Android 逆向安全学习笔记:https://qr18.cn/CQ5TcL
Android 音视频篇:https://qr18.cn/Ei3VPD
Jetpack全家桶篇(内含Compose):https://qr18.cn/A0gajp
OkHttp 源码解析笔记:https://qr18.cn/Cw0pBD
Kotlin 篇:https://qr18.cn/CdjtAF
Gradle 篇:https://qr18.cn/DzrmMB
Flutter 篇:https://qr18.cn/DIvKma
Android 八大知识体:https://qr18.cn/CyxarU
Android 核心笔记:https://qr21.cn/CaZQLo
Android 往年面试题锦:https://qr18.cn/CKV8OZ
2023年最新Android 面试题集:https://qr18.cn/CgxrRy
Android 车载开发岗位面试习题:https://qr18.cn/FTlyCJ
音视频面试题锦:https://qr18.cn/AcV6Ap

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

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

相关文章

【赠书活动】python自动售货机销售数据分析

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

Win10删除文件需要TrustedInstaller权限的解决方法

在Win10电脑中,有时候在我们尝试删除某些文件或文件夹时,系统却提示要有TrustedInstaller权限才能删除成功。这是由于一些特定的系统文件或文件夹被保护,确保系统的稳定性和安全性。如果大家在删除文件也遇到这样的提示,那么可以按…

React18入门(第三篇)——React Hooks详解,React内置Hooks、自定义Hooks使用

文章目录 概述一、内置 Hook——useState1.1 响应式数据更新1.2 什么是 state1.3 state 特点(一)——异步更新1.4 state 特点(二)——可能会被合并1.5 state 特点(三)——不可变数据(重要&#…

看一下链表结构

序、慢慢来才是最快的方法。 背景 链表(Linked List) 链表是一种常见的基础数据结构,是一种线性表。与顺序表不同的是,链表中的每个节点不是顺序存储的,而是通过节点的指针域指向到下一个节点。 1.链表的优缺点 2.链表的类型 单链表、双链表…

UDP 的报文结构

UDP的报文结构: 其中前面的源端口号和目的端口号,UDP长度和UDP检验和,它们都是2个字节。 那么什么是UDP长度呢,它指的是后面的数据的长度,换算单位也就是64kb,因此一个数据报(数据)最…

idea 启动项目报错 Command line is too long

1.idea 启动报错 Command line is too long&#xff0c;启动报错信息&#xff1a;Error running ‘Application‘: Command line is too long. 2.如何解决&#xff1f; 1&#xff09;idea打开一个项目。 2.打开项目下的*.idea* 文件夹下的 workspace.xml 文件。 3.在<co…

【高阶数据结构】图详解第三篇:最小生成树(Kruskal算法+Prim算法)

文章目录 最小生成树1. 最小生成树概念2. Kruskal算法算法思想代码实现测试 3. Prim算法算法思想代码实现测试 4. 源码 最小生成树 1. 最小生成树概念 在了解最小生成树之前&#xff0c;我们先来回顾一下生成树的概念&#xff0c;这是我们之前文章提到过的&#xff1a; 无向图…

QMA6100P 姿态传感器使用

QMA6100P 姿态传感器使用 项目用途&#xff1a;分析和记录设备位置信息变化&#xff08;设备安装在车辆内部&#xff09; 通讯接口&#xff1a;I2C&#xff0c;地址0x13&#xff0c;标准I2C通讯采用IO模拟 功能需求&#xff1a;读取三轴加速度 芯片初始化设置 参考手册说明和…

STM32 芯片怎么选型?

SMT32概览&#xff1a; STM32F051R8T6x xx 代表的含义 STM32MPU产品型号含义 STM32芯片封装&#xff1a;

浮点数运算以及溢出问题

一、浮点数加减运算的步骤 对阶&#xff1a;小阶向大阶对齐&#xff0c;阶小的那个数尾数右移&#xff0c;对于IEEE754标准表示的浮点数来说&#xff0c;右移时要注意将隐含的一位1右移到小数部分尾数加减&#xff1a;注意要先还原隐藏位尾数规格化&#xff1a;直到将第一位1移…

外汇天眼:外汇投资出入金难?教你一个快速到账的方法!

对于每一位投资者来说&#xff0c;在外汇市场中盈利赚钱才是最重要的事&#xff01;而对盈利来说最重要的事就是能够顺利地出入金&#xff01; 但在复杂的外汇市场中&#xff0c;摒弃黑平台&#xff0c;在正规平台出入金很多时候也并没有那么顺利&#xff0c;所以很多外汇投资…

MySQL常用脚本

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《ELement》。&#x1f3af;&#x1f3af; &#x1…

Godot2D角色导航-自动寻路教程(Godot实现角色随鼠标移动)

文章目录 运行结果2D导航概述开始前的准备2D导航创建导航网格创建角色 其他文章 运行结果 2D导航概述 Godot为2D和3D游戏提供了多个对象、类和服务器&#xff0c;以便于基于网格或基于网格的导航和路径查找。 说到导航&#xff0c;就得说一下导航网格&#xff0c;导航网格定义…

Design patterns--策略模式

设计模式之策略模式 笔者经常使用Modbus TCP和Modbus RTU通信协议&#xff0c;而两种的请求数据的格式不一样&#xff0c;故而采用策略模式来健壮整个工程项目。 代码示例 #ifndef MODBUS_H #define MODBUS_H #include <string>std::string convertToHex(unsigned char…

Spring framework Day09:JSR250注入注解

前言 JSR 250 是 Java Specification Request 的缩写&#xff0c;它定义了一组用于依赖注入和生命周期管理的注解。这些注解是在 Java EE 5 规范中引入的&#xff0c;用于简化和标准化开发企业级应用程序的依赖注入和生命周期管理。 一、开始学习 本次需要学习的依然是注解&…

淘宝商品品牌数据采集接口,淘宝商品详情数据接口,淘宝API接口

采集淘宝商品品牌数据&#xff0c;可以按照以下步骤进行&#xff1a; 确定采集目标&#xff1a;确定要采集的淘宝商品品牌和具体的产品类型。选择采集工具&#xff1a;可以选择爬虫、数据抓取工具等采集工具进行数据采集。设置采集参数&#xff1a;设置采集参数&#xff0c;包…

ROS中的图像数据

无论是USB摄像头还是RGBD摄像头&#xff0c;发布的图像数据格式多种多样&#xff0c;在处理这些数据之前&#xff0c;我们首先需要了解这些数据的格式。 二维图像数据 连接USB摄像头到PC端的USB接口&#xff0c;通过以下命令启动摄像头&#xff1a; roslaunch usb_cam usb_ca…

PHP 员工工资管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 员工工资管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php员工工资管理系统 代码 https://download.csdn.net/download/qq_41221322/884215…

睿趣科技:未来抖音开网店还有前景吗

随着科技的快速发展&#xff0c;电商平台已经成为了人们生活中不可或缺的一部分。在中国&#xff0c;抖音作为一个短视频平台&#xff0c;近年来迅速崛起&#xff0c;吸引了大量的用户和商家。那么&#xff0c;在未来&#xff0c;抖音是否还能为商家提供一个有效的电商平台呢?…

【LeetCode】2319. 判断矩阵是否是一个X矩阵

难度&#xff1a;简单 题目 如果一个正方形矩阵满足下述 全部 条件&#xff0c;则称之为一个 X 矩阵 &#xff1a; 矩阵对角线上的所有元素都 不是 0矩阵中所有其他元素都是 0 给你一个大小为 n x n 的二维整数数组 grid &#xff0c;表示一个正方形矩阵。如果 grid 是一个…