🍣

Jetpack compose 1.0.5を利用する

2022/01/03に公開

Android Studioで新しいプロジェクトを作成するとき、プロジェクトテンプレートに "Empty Compose Activity" を選択すると Jetpack Compose 1.0.1が指定されている。これを公式ドキュメント記載の通り、最新の1.0.5を利用するように修正する(日本語ドキュメントでは正式リリース前の 1.0.0-alpha11 記載なので英語版に表示を切り替える必要がある点に注意)。

動作環境:

Android Studio Arctic Fox | 2020.3.1 Patch 4
Runtime version: 11.0.10+0-b96-7249189 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

変更点

プロジェクトルートの build.gradle で指定している composeのバージョンで 1.0.5を指定する。

root/build.gradle
     ext {
-        compose_version = '1.0.1'
+        compose_version = '1.0.5'
     }

また、同ファイルの kotlin-gradle-plugin のバージョンを 1.5.31 にアップデートする。

root/build.gradle
     dependencies {
         classpath "com.android.tools.build:gradle:7.0.4"
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"

以上で Jetpack Compose 1.0.5 が利用できる。

compose 1.0.5

compose 1.0.5のリリースノートはこちら。1.0.1 からの主な変更点は不具合修正および依存Kotlinバージョンが1.5.21から1.5.31にアップデートされたこと。不具合修正が含まれているので新しいバージョンがよいが、基本的には利用したいKotlinバージョンに応じて対応バージョンを選択することがよい。

composeは依存するKotlinバージョンが決まっているので、composeをアップデートするとKotlinバージョンも変更する必要があるし、逆に利用したいKotlinバージョンを変更すると対応するcomposeバージョンに変更する必要がある。

ComposeOptions.kotlinCompilerVersion is deprecated

上記変更点の通り修正しても、ComposeOptions.kotlinCompilerVersion is deprecated という警告メッセージが表示される。これは、テンプレートで作成したプロジェクトでは root/app/build.gradle においてkotlinCompilerVersionを指定していることが原因。

root/app/build.gradle
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
        kotlinCompilerVersion '1.5.21'
    }

この値は現在参照されておらず、削除しても問題ない。kotlinのバージョンは root/build.gradle に記載の kotlin-gradle-plugin のバージョンと等しく、こちらを参照している。逆に、kotlinCompilerVersionkotlin-gradle-plugin バージョンと乖離していても動作に影響はない。

root/build.gradle
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.4"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"

We recommend using a newer Android Gradle plugin to use compileSdk = 32

これはJetpack Composeとは関係ないけれど、このような警告が出力される場合がある。Android StudioのSDKマネージャーを開くと、最新のSDKバージョンとして32が選択肢にある。何も考えずにこれを有効にしてしまうと、テンプレートから生成したプロジェクトは compileSdk = 32 を指定してくる。

最新の Android Gradle Plugin(AGP) 7.0.4 を利用しても(リリースノートを見ると 7.0.1までしか記載がない?) compileSdk = 31までしかテストしていないので修正しろと警告が出る。

We recommend using a newer Android Gradle plugin to use compileSdk = 32

This Android Gradle plugin (7.0.4) was tested up to compileSdk = 31

This warning can be suppressed by adding
    android.suppressUnsupportedCompileSdk=32
to this project's gradle.properties

The build will continue, but you are strongly encouraged to update your project to
use a newer Android Gradle Plugin that has been tested with compileSdk = 32

警告の通り、android.suppressUnsupportedCompileSdk=32 を指定して警告出力を抑止するか、compileSdk = 31にするか、 AGPをより新しいバージョンを利用する(提供されていないので選択不可)かのどれかを選ぶ必要がある。通常用途ではSDK = 32を選ぶ理由がないので、SDKマネージャーからSDK = 32をアンインストールした上でcompileSdk = 31に修正する方法がよさそう。

Discussion