[Jetpack Compose] androidx.compose 1.5 以降は compile sdk 34 が必要
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.0
が androidx.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
参考
- android - Is the minCompileSDK of jetpack compose 1.5 API level 34? - Stack Overflow
- Dependency 'androidx.emoji2:emoji2-views-helper:1.4.0' requires version 34 or later [295457468] - Visible to Public - Issue Tracker
- Android アプリが使用している依存ライブラリをツリー構造で表示する(dependencies/androidDependencies タスク) - まくまくAndroidノート
- Gradleで陥りやすい問題点の解決策TIPS集 - 猫好きモバイルアプリケーション開発者記録
Discussion