原文地址: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的相容性