Android Compose BoM 物料清单

这个概念对于用过SpringBoot的同学来说很容易理解,咱们还是从头说起。

什么是BoM?

说咱们的Android Compose BoM,BoM=Bill of Material,直译为:物料清单。原本是制造业中的一个概念,比如组装一个手机,BoM包括屏幕、手机壳、芯片、主板、电池等,按照既定的物料清单采购好配件,工厂进行组装生产。

软件中“BoM”干啥用?

软件为什么借用这个概念?现在Android开发中用到的库越来越多,而且库之间相互依赖,有特定版本的要求,如果对不上就不能正常编译、运行,手动管理这些依赖配置非常繁琐和耗时。这个问题不仅在Android上,Linux、Spring开发都有类似的问题,SpringBoot中的解决版本和Compose BoM类似,而且感觉更加彻底。解决方法,就是把常用的依赖库,能搭配的版本整理成一个公共列表,这个列表其实就是BoM。BoM有不同的版本,保证每个版本中的各个库版本可以正常工作。这样,在工程中先引用BoM,然后正常的引用各个需要的依赖库,但是依赖库不用指定版本号,默认使用BoM中的库版本(指定版本号,可以覆盖BoM中的库版本),可以避免多个库直接依赖不匹配的问题。

借助 Compose 物料清单 (BoM),只需指定 BoM 的版本,即可管理所有 Compose 库版本。BoM 本身包含指向不同 Compose 库的稳定版的链接,以便它们能够很好地协同工作。在应用中使用 BoM 时,无需向 Compose 库依赖项本身添加任何版本。更新 BoM 版本时,使用的所有库都会自动更新到新版本。

怎么通过BoM引用库版本?

在 build.gradle 依赖项部分中,保留 BoM 平台的导入内容。在导入库依赖项时,指定所需的版本。例如,如果使用 Alpha 版 Material 3,声明依赖项的方法如下:

dependencies {
    // Import the Compose BOM
    implementation platform('androidx.compose:compose-bom:2022.12.00')

    // Override Material Design 3 library version with a pre-release version
    implementation 'androidx.compose.material3:material3:1.1.0-alpha01'

    // Import other Compose libraries without version numbers
    // ..
    implementation 'androidx.compose.foundation:foundation'
}

使用BoM是不是一下子把所有库都引入到工程里了?

不是。要在应用中实际添加和使用 Compose 库,必须在模块Gradle 文件(app/build.gradle)中将每个库声明为单独的依赖项行。使用 BoM 可确保应用中的任何 Compose 库版本兼容,但 BoM 实际上并不会将这些 Compose 库添加到您的应用中。

已经提供的几个BoM和库版本映射参考

库组版本 (2022.10.00)版本 (2022.11.00)版本 (2022.12.00)
androidx.compose.animation:animation1.3.01.3.11.3.2
androidx.compose.animation:animation-core1.3.01.3.11.3.2
androidx.compose.animation:animation-graphics1.3.01.3.11.3.2
androidx.compose.foundation:foundation1.3.01.3.11.3.1
androidx.compose.foundation:foundation-layout1.3.01.3.11.3.1
androidx.compose.material:material1.3.01.3.11.3.1
androidx.compose.material:material-icons-core1.3.01.3.11.3.1
androidx.compose.material:material-icons-extended1.3.01.3.11.3.1
androidx.compose.material:material-ripple1.3.01.3.11.3.1
androidx.compose.material3:material31.0.01.0.11.0.1
androidx.compose.material3:material3-window-size-class1.0.01.0.11.0.1
androidx.compose.runtime:runtime1.3.01.3.11.3.2
androidx.compose.runtime:runtime-livedata1.3.01.3.11.3.2
androidx.compose.runtime:runtime-rxjava21.3.01.3.11.3.2
androidx.compose.runtime:runtime-rxjava31.3.01.3.11.3.2
androidx.compose.runtime:runtime-saveable1.3.01.3.11.3.2
androidx.compose.ui:ui1.3.01.3.11.3.2
androidx.compose.ui:ui-geometry1.3.01.3.11.3.2
androidx.compose.ui:ui-graphics1.3.01.3.11.3.2
androidx.compose.ui:ui-test1.3.01.3.11.3.2
androidx.compose.ui:ui-test-junit41.3.01.3.11.3.2
androidx.compose.ui:ui-test-manifest1.3.01.3.11.3.2
androidx.compose.ui:ui-text1.3.01.3.11.3.2
androidx.compose.ui:ui-text-google-fonts1.3.01.3.11.3.2
androidx.compose.ui:ui-tooling1.3.01.3.11.3.2
androidx.compose.ui:ui-tooling-data1.3.01.3.11.3.2
androidx.compose.ui:ui-tooling-preview1.3.01.3.11.3.2
androidx.compose.ui:ui-unit1.3.01.3.11.3.2
androidx.compose.ui:ui-util1.3.01.3.11.3.2
androidx.compose.ui:ui-viewbinding1.3.01.3.11.3.2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抓饼先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值