内容
Jetpack Compose関連のライブラリのバージョン指定をこれまで個別に行なってきたが、Firebaseと同様にBOM(Bill of Materials)が提供されるようになった。依存関係をカバーしてくれるので早速使っていきたい。
対応
基本となる設定を確認。既に書いてあると思う。
android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.3.2" } }
こんな感じでこれまで記載していたライブラリ群がある。
// 変更前 implementation("androidx.compose.compiler:compiler:1.3.2") implementation("androidx.compose.foundation:foundation:1.3.0-rc01") implementation("androidx.compose.material:material:1.3.0-rc01") implementation("androidx.compose.material3:material3:1.0.0-rc01") implementation("androidx.compose.material3:material3-window-size-class:1.0.0-rc01") implementation("androidx.compose.material:material-icons-core:1.3.0-rc01") implementation("androidx.compose.material:material-icons-extended:1.3.0-rc01") implementation("androidx.compose.runtime:runtime-livedata:1.3.0-rc01") implementation("androidx.compose.ui:ui:1.3.0-rc01") implementation("androidx.compose.ui:ui-tooling:1.3.0-rc01") androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.2.1")
これを以下のように書き換える
// 変更後 val composeBom = platform("androidx.compose:compose-bom:2022.11.00") implementation(composeBom) androidTestImplementation(composeBom) // compilerはkotlin compilerプラグインにリンクされているためBOMの対象外 implementation("androidx.compose.compiler:compiler:1.3.2") implementation("androidx.compose.animation:animation") implementation("androidx.compose.foundation:foundation") implementation("androidx.compose.material:material") implementation("androidx.compose.material:material-icons-core") implementation("androidx.compose.material:material-icons-extended") implementation("androidx.compose.material3:material3") implementation("androidx.compose.material3:material3-window-size-class") implementation("androidx.compose.runtime:runtime-livedata") implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-tooling") androidTestImplementation("androidx.compose.ui:ui-test-junit")
個別のバージョン指定が不要になり、かなり楽になった。compiler:compiler
だけはBOMに含まれないので注意。
BOMのバージョンと個別のライブラリのバージョンの対応付けは以下で確認できる。
ここに含まれているライブラリがBOMのサポート範囲ということだ。BOMのバージョンはライブラリのリリースノートには書いてなかったので、しばらくは都度こちらを見る必要がありそう。