💣

material 1.7.1(B0M 2024.09.01) から material-icons-core への依存が削除されました

2024/09/19に公開

こんにちは、 TimeTree の Android エンジニアの Andy(@wada811) です。

Fact

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 への依存が削除されています。
https://cs.android.com/androidx/platform/frameworks/support/+/1d1abef790da93325a83fe19b50ccdec06be6956
上記のコミットは以下の Issue のため行われたものです。
Add compose native stubs [349894318] - Issue Tracker
https://issuetracker.google.com/issues/349894318#comment19
上記の Issue は以下の Issue の分割対応のようです。
Remove compose desktop sources and replace them with stubs [349141613] - Issue Tracker
https://issuetracker.google.com/issues/349141613
リリースノートを見てみると、たしかにそのようなことが書いてあります。

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
https://android-review.googlesource.com/c/platform/frameworks/support/+/3109060
上記の変更で 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 versions

material-icons-core と material-icons-extended は、Compose 1.7.0 安定版以降は出荷が停止されます。開発者は、Compose の残りの部分がバージョンアップした後も、1.7.0 バージョンを引き続き使用する必要があります。

とのことです。
material-icons-* は残るので各自で依存関係を追加する方針になるのかもしれません。
何かあれば以下のページが更新されるかもしれません。
https://developer.android.com/reference/kotlin/androidx/compose/material/icons/package-summary

Appendix

Problems by BOM?

  • material-icons-* は BOM に含まれているので BOM が悪いわけではない
    • どちらかというと material が api で参照していたのが悪い
  • Renovate が作る PR に更新内容が表示されるけど BOM の場合は表示されないのでわかりにくい
    • CI でコケるから問題ない
  • BOM だと中身のライブラリが major/minor/patch のどの version up なのか区別がつかない
    • Compose の BOM の versioning が日付なのが悪い
  • BOM の良いところはある?

Material Icons is deprecated

https://fonts.google.com/icons の Filter に Material Icons (deprecated) って書いてありました。

2022年に Material Symbols というのが新しく作られていたようです。
https://twitter.com/googlefonts/status/1516934123700383744
https://qiita.com/xrxoxcxox/items/c7946d6b50589087f802

Issue Tracker にも Material Symbols を使ったライブラリが欲しいというリクエストがありました。
[Feature request] Use Material Symbols instead of icons [322402925] - Issue Tracker
https://issuetracker.google.com/issues/322402925

material-icons-core は更新されなくなり Material Symbols 版のライブラリが提供されるのか、
Material Symbols は1つずつインポートするのか、今後を注視していく必要がありそうです。
とりあえず上記の Issue を Star しておくと良さそうです。

TimeTree Tech Blog

Discussion