😇

[Jetpack Compose] androidx.compose 1.5 以降は compile sdk 34 が必要

2023/08/19に公開

2023年7月終わりから8月の初旬の間に androidx.compose.* の 1.5.0 がリリースされましたが、アップデートするとビルド時に以下のエラーが発生しました。

 1.  Dependency 'androidx.emoji2:emoji2-views-helper:1.4.0' requires libraries and applications that
      depend on it to compile against version 34 or later of the
      Android APIs.

      :app is currently compiled against android-33.

      Also, the maximum recommended compile SDK version for Android Gradle
      plugin 8.1.0 is 33.

(略)

emoji2 に直接依存していないアプリでこのエラーが出たので最初とまどったのですが、 $ gradlew :app:dependencies で確認すると androidx.compose.foundation:foundation-android:1.5.0androidx.emoji2:emoji2:1.4.0 に依存していて、 emoji2 に合わせて emoji2-views-helper も 1.4.0 になり、その compile sdk バージョンが 34 以降に指定されているのでエラーになるようです。

しかし、 API Level 34 (Android 14) は現状 ベータリリース状態なため、 製品アプリで androidx.compose.*:1.5.0 を使うのはまだ早いということになります。

androidx.compose.ui:ui-text-android:1.5.0 の依存関係では emoji2:1.2.0 が指定されているので本当に foundation で emoji2:1.4.0 が必要なのか?とか、 emoji2-views-helper:1.4.0 は何で バージョン 34 以上が必須なのか、など若干不明な(というかよく分かっていない)点があるので今後状況が変わる可能性はありますが、とりいそぎ現状そんな感じです。

compose-bom

以下ページによると、最新の compose-bom:2023.08.00 は 1.5.0 系を使用しているので、API Level 33 では一つ前の compose-bom:2023.06.01 を使った方がよさそうです。

Android 14 はいつリリースなの?

以下の記事を読むと来月?あたりに出そうな雰囲気もあります。

雑多なメモ

  • compose のソースコード: https://android.googlesource.com/platform/frameworks/support/

  • gradle で同じライブラリでバージョンが競合した場合、一番高いバージョンが使われるらしい > 推移的依存関係

  • 依存関係ツリーを確認するコマンド

    $ export JAVA_HOME=$PATH_TO_ANDROID_STUDIO/jbr
    $ ./gradlew :app:dependencies
    
  • ( 2023年8月31日以降の Google Play の対象APIレベルの要件は 33

参考

Discussion