Jetpack Composeのバージョニングについて
概要
最近関わっているAndroidプロジェクトのJetpack Composeのバージョンが古く、バージョンを上げました。この際バージョニングについて少し調べたので備忘録としてまとめておきます。
TL;DR
- KotlinとCompose Compilerのバージョンは必ず対応したものを使用しなければならない
- Compose Compiler以外のComposeライブラリのバージョンは一致させる必要はない
Jetpack Composeのバージョニング
Jetpack Composeはandroidx.compose.compiler
やandroidx.compose.animation
など7つのMaven Group IDを組み合わせたものです。
各グループにはそれぞれ目的に応じた機能が含まれており、これらは独立しています。
例えばandroidx.compose.compiler
とandroidx.compose.animation
のバージョンが一致している必要はありません。
ではなぜ独立するようになったのでしょうか。理由は大きく2つです。
- 各ライブラリのバージョンが暗黙的に結合されていた
- Kotlinのバージョンが上げづらくなっていた
各ライブラリのバージョンが暗黙的に結合されていた
以前はandroidx.compose.compiler
のバージョンを上げる際、そのほかのComposeライブラリのバージョンも引き上げることが必要なケースがありました。
これによりバージョンを上げるハードルが高くなってしまっていましたが、依存関係を切り離すことで各ライブラリの段階的なアップグレードが容易になりました。
またライブラリ間の上方互換性と下位互換性もサポートしています。例えばCompose Compilerのみ1.2.0
に上げるが、その他のComposeライブラリは1.1.0
のままにすることができたり、逆にその他のComposeライブラリを1.3.0
にしたりすることもできます。
Kotlinのバージョンが上げづらくなっていた
以前はKotlinの最新バージョンを使おうとすると、Compose Compilerのバージョンも上げる必要があり、さらにその他のComposeライブラリのバージョンも上げる必要がありました。しかしComposeライブラリのバージョニングを切り離すことにより、Koltinのバージョンを上げてもCompose Compiler以外のバージョンは上げる必要はありません。これによりCompose Compilerのバージョンのみを上げることで、Kotlinの最新版をすぐに使用しやすくなりました。
Discussion