原文地址:Jetpack Compose学习(10)——使用Compose物料清单BOM,更好管理依赖版本 - Stars-One的杂货小窝

本期讲解下关于Android推出的BOM来简化我们添加compose依赖过于繁杂的问题

本系列以往文章请查看此分类链接Jetpack compose学习

介绍

BOM为Bill of Material的缩写

原本是制造业中的一个概念,比如组装一个手机,BoM包括屏幕、手机壳、芯片、主板、电池等,按照既定的物料清单采购好配件,工厂进行组装生产

对于我们开发者来说, 有什么作用的?

举个例子,像compose的一系列依赖,版本众多,更新且又频繁,且又相互有所依赖,对于我们开发来说,理清这些层层次次关系足以头大,然后还有个致命问题,我们几个库使用不同版本,可能还会导致编译直接报错,出现依赖版本等冲突问题

鉴于上述原因,Android官方就是提供了一个BOM的概念,也就是今天的正文。

BoM 是否会自动将所有 Compose 库添加到我的应用中?

不会。要在您的应用中实际添加和使用 Compose 库,您必须在模块(应用级)Gradle 文件(通常是 app/build.gradle)中将每个库声明为单独的依赖项行。

使用 BoM 可确保应用中的任何 Compose 库版本兼容,但 BoM 实际上并不会将这些 Compose 库添加到您的应用中。

为什么建议使用 BoM 管理 Compose 库版本?

今后,Compose 库将单独进行版本控制,这意味着版本号将开始按照自己的节奏递增。每个库的最新稳定版本已经过测试,并保证能够很好地协同工作。不过,找到每个库的最新稳定版本可能比较困难,而 BoM 会帮助您自动使用这些最新版本

使用

使用的话也很简单,如下面例子:

dependencies {

    def composeBom = platform('androidx.compose:compose-bom:2022.12.00')
implementation composeBom
androidTestImplementation composeBom implementation 'androidx.compose.ui:ui'
implementation 'androidx.activity:activity-compose'
// Material Design 3
implementation 'androidx.compose.material3:material3'
}

需要注意的是,我们引入之后,后续的compose相关的库,都不需要写版本号了,由BOM默认指定版本

当然,如果你想指定版本,也是可以的,会优先以你指定的版本为准

库组 版本 (2022.10.00) 版本 (2022.11.00) 版本 (2022.12.00) 版本 (2023.01.00)
androidx.compose.animation:animation 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.animation:animation-core 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.animation:animation-graphics 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.foundation:foundation 1.3.0 1.3.1 1.3.1 1.3.1
androidx.compose.foundation:foundation-layout 1.3.0 1.3.1 1.3.1 1.3.1
androidx.compose.material:material 1.3.0 1.3.1 1.3.1 1.3.1
androidx.compose.material:material-icons-core 1.3.0 1.3.1 1.3.1 1.3.1
androidx.compose.material:material-icons-extended 1.3.0 1.3.1 1.3.1 1.3.1
androidx.compose.material:material-ripple 1.3.0 1.3.1 1.3.1 1.3.1
androidx.compose.material3:material3 1.0.0 1.0.1 1.0.1 1.0.1
androidx.compose.material3:material3-window-size-class 1.0.0 1.0.1 1.0.1 1.0.1
androidx.compose.runtime:runtime 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.runtime:runtime-livedata 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.runtime:runtime-rxjava2 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.runtime:runtime-rxjava3 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.runtime:runtime-saveable 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-geometry 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-graphics 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-test 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-test-junit4 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-test-manifest 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-text 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-text-google-fonts 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-tooling 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-tooling-data 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-tooling-preview 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-unit 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-util 1.3.0 1.3.1 1.3.2 1.3.3
androidx.compose.ui:ui-viewbinding 1.3.0 1.3.1 1.3.2 1.3.3

最新的版本信息可以通过官方的链接进行查看BoM 到库的版本映射 |  Android Developers

除此之外,还需要注意与kotiln的版本对应关系,BOM的各版本兼容的最低Kotlin版本可是有所不同的!详情见下文

compose版本与Kotlin的兼容性

参考

Jetpack Compose学习(10)——使用Compose物料清单BOM,更好管理依赖版本的更多相关文章

  1. Jetpack Compose学习(3)——图标(Icon) 按钮(Button) 输入框(TextField) 的使用

    原文地址: Jetpack Compose学习(3)--图标(Icon) 按钮(Button) 输入框(TextField) 的使用 | Stars-One的杂货小窝 本篇分别对常用的组件:图标(Ic ...

  2. Jetpack Compose学习(5)——从登录页美化开始学习布局组件使用

    原文:Jetpack Compose学习(5)--从登录页美化开始学习布局组件使用 | Stars-One的杂货小窝 本篇主要讲解常用的布局,会与原生Android的布局控件进行对比说明,请确保了解A ...

  3. Jetpack Compose学习(6)——关于Modifier的妙用

    原文: Jetpack Compose学习(6)--关于Modifier的妙用 | Stars-One的杂货小窝 之前学习记录中也是陆陆续续地将常用的Modifier的方法穿插进去了,本期就来详细的讲 ...

  4. Jetpack Compose学习(9)——Compose中的列表控件(LazyRow和LazyColumn)

    原文:Jetpack Compose学习(9)--Compose中的列表控件(LazyRow和LazyColumn) - Stars-One的杂货小窝 经过前面的学习,大致上已掌握了compose的基 ...

  5. Jetpack Compose学习(1)——从登录页开始入门

    原文地址:Jetpack Compose学习(1)--从登录页开始入门 | Stars-One的杂货小窝 Jetpack Compose UI在前几天出了1.0正式版,之前一直还在观望,终于是出了正式 ...

  6. Jetpack Compose学习(2)——文本(Text)的使用

    原文: Jetpack Compose学习(2)--文本(Text)的使用 | Stars-One的杂货小窝 对于开发来说,文字最为基础的组件,我们先从这两个使用开始吧 本篇涉及到Kotlin和DSL ...

  7. Jetpack Compose学习(4)——Image(图片)使用及Coil图片异步加载库使用

    原文地址 Jetpack Compose学习(4)--Image(图片)使用及Coil图片异步加载库使用 | Stars-One的杂货小窝 本篇讲解下关于Image的使用及使用Coil开源库异步加载网 ...

  8. Jetpack Compose学习(7)——MD样式架构组件Scaffold及导航底部菜单

    Jetpack Compose学习(7)--MD样式架构组件Scaffold及导航底部菜单 | Stars-One的杂货小窝 Compose给我们提供了一个Material Design样式的首页组件 ...

  9. Jetpack Compose学习(8)——State及remeber

    原文地址: Jetpack Compose学习(8)--State状态及remeber关键字 - Stars-One的杂货小窝 之前我们使用TextField,使用到了两个关键字remember和mu ...

  10. Docker技术入门与实战 第二版-学习笔记-9-Docker Compose 项目-2-Compose 命令说明

    Compose 命令说明 1)命令对象与格式 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中 的服务或者容器.如果没有特别的说明,命令对象将是项目,这意味着项目中所有 ...

随机推荐

  1. 5 STL-string

    ​ 重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦!  生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...

  2. 关于mysql命令的学习

    前言 这篇文章我不会具体说明哪些操作有哪些命令,我只说明这些命令的记忆方法.其实知道原理后,这些命令尽管多,但都是有据可循的 mysql提示符 可以通过登录时加入 –prompt 提示符内容 参数 登 ...

  3. Flink SQL管理平台flink-streaming-platform-web安装搭建

    文章都在个人博客网站:https://www.ikeguang.com/ 同步,欢迎访问. 最近看到有人在用flink sql的页面管理平台,大致看了下,尝试安装使用,比原生的flink sql界面确 ...

  4. 1.2 Hadoop简介-hadoop-最全最完整的保姆级的java大数据学习资料

    目录 1.2 Hadoop简介 1.2.1 什么是Hadoop 1.2.2 Hadoop的起源 1.2.3 Hadoop的特点 1.2.4 Hadoop的发行版本 1.2.5 Apache Hadoo ...

  5. 解决笔记本安装centos7后无法调节屏幕亮度

    起因:本人有台老古董笔记本,大约是10年前左右了,三星rv411,配置较低无法安装win7以上的系统.装个CentOS7正好可以拿来学习Linux系统. 但是遇到一个特别恶心的情况,笔记本上调节屏幕亮 ...

  6. 当 xxl-job 遇上 docker → 它晕了,但我不能乱!

    开心一刻 某次住酒店,晚上十点多叫了个外卖 过了一阵儿,外卖到了 因为酒店电梯要刷卡,所以我下楼去接 到了电梯口看到个模样不错的妹纸 我:是你么? 妹纸愣了下:嗯! 于是拉上进电梯回房间,正准备开始呢 ...

  7. GO语言基础 为什么我要学习Golang以及GO语言入门普及

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.这系列文章入门部分将参考 ...

  8. 连接MySql时提示%d format: a number is required, not str

    代码: sql = "select * from appelementinfo" coon = pymysql.connect(user='root', password='', ...

  9. python 实现RSA公钥加密,私钥解密

    from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5 from Cryp ...

  10. Redis基本操作(2)

    一.list类型 列表的元素类型为string 按照插⼊顺序排序 增加.修改 例1:在左侧插⼊数据 lpush key value1 value2 ... 例2:在右侧插⼊数据 rpush key v ...