material 1.7.1(B0M 2024.09.01) から material-icons-core への依存が削除されました
こんにちは、 TimeTree の Android エンジニアの Andy(@wada811) です。
Fact
-
androidx.compose.material:material:1.7.1 から androidx.compose.material:material-icons-core への依存が削除された
- material 1.7.1 is in Compose BOM 2024.09.01
Problems
- androidx.compose.material.icons.* の参照を解決できない
Conditions
- androidx.compose.material:material を依存関係に追加している
- androidx.compose.material:material-icons-* を依存関係に追加していない
- androidx.compose.material:material の推移的依存関係で解決していた
- androidx.compose.material.icons.* を参照している
Solutions
- androidx.compose.material:material-icons-* の依存を追加する
Why removed?
以下のコミットで androidx.compose.material:material の build.gradle から api で参照していた androidx.compose.material:material-icons-core への依存が削除されています。
Add compose native stubs [349894318] - Issue Tracker
上記の Issue は以下の Issue の分割対応のようです。
Remove compose desktop sources and replace them with stubs [349141613] - Issue Tracker
リリースノートを見てみると、たしかにそのようなことが書いてあります。
No changes to Android artifacts.
-desktop
artifacts were removed and-jvmStubs
and-linuxx64Stubs
artifacts were added. None of these targets are meant to be used, they are placeholders to help Jetbrains Compose efforts.
https://developer.android.com/jetpack/androidx/releases/compose-material#1.7.1
どうやら Compose Multiplatform のために依存関係を削除されたようです。
What's the future?
Remove material-icons-* projects (3109060) · Gerrit Code Review 上記の変更で material-icons-* は削除されました。
material-icons-core and material-icons-extended will
stop shipping after Compose 1.7.0 stable. Developers should continue
using 1.7.0 versions even after the rest of compose moves forward
in versionsmaterial-icons-core と material-icons-extended は、Compose 1.7.0 安定版以降は出荷が停止されます。開発者は、Compose の残りの部分がバージョンアップした後も、1.7.0 バージョンを引き続き使用する必要があります。
とのことです。
material-icons-* は残るので各自で依存関係を追加する方針になるのかもしれません。
何かあれば以下のページが更新されるかもしれません。
Appendix
Problems by BOM?
- material-icons-* は BOM に含まれているので BOM が悪いわけではない
- どちらかというと material が api で参照していたのが悪い
- Renovate が作る PR に更新内容が表示されるけど BOM の場合は表示されないのでわかりにくい
- CI でコケるから問題ない
- BOM だと中身のライブラリが major/minor/patch のどの version up なのか区別がつかない
- Compose の BOM の versioning が日付なのが悪い
- BOM の良いところはある?
- Renovate でまとめてライブラリを更新するなら問題ないかも
- 以下をまとめて更新するようにしよう
- 更新内容も表示されてハッピーなはず
- Renovate でまとめてライブラリを更新するなら問題ないかも
Material Icons is deprecated
https://fonts.google.com/icons の Filter に Material Icons (deprecated) って書いてありました。
2022年に Material Symbols というのが新しく作られていたようです。
Issue Tracker にも Material Symbols を使ったライブラリが欲しいというリクエストがありました。
[Feature request] Use Material Symbols instead of icons [322402925] - Issue Tracker
material-icons-core は更新されなくなり Material Symbols 版のライブラリが提供されるのか、
Material Symbols は1つずつインポートするのか、今後を注視していく必要がありそうです。
とりあえず上記の Issue を Star しておくと良さそうです。
TimeTreeのエンジニアによる記事です。メンバーのインタビューはこちらで発信中! note.com/timetree_inc/m/m4735531db852
Discussion