0
0

Jetpack Compose 関連の依存関係まとめ

Last updated at Posted at 2024-08-02

はじめに

  • Jetpack Compose に関する依存関係について、時々確認することがあるのでまとめました
  • 記事を作成した時点での Android Studio のバージョンは「Koala | 2024.1.1」です
    • ちなみに Build は「#AI-241.15989.150.2411.11948838, built on June 11, 2024」でした
  • 依存関係は Gradle version catalogs を使って設定しています
    • カタログを使えない事情がありましたら、従来通りの記法に読み替えて頂ければと思います
    • version.ref には適当な値が設定されているとお考えください
  • 不備や認識違いがありましたら、指摘頂けると大変助かります

プロジェクト作成直後に設定されている依存関係

  • プロジェクト作成時のウィザードで [Phone and Tablet] > [Empty Activity] を選択した場合のデフォルト設定です
  • libs.androidx.compose.ui があるので、libs.androidx.compose.ui.graphics は削っても問題はないと思います
    • 下記の build.gradle ではコメントアウトしていますが、これでも問題なく動作します(コメントアウトしなくても勿論大丈夫です)

ビルド設定

  • バージョンカタログ
# Compose BOM (部品表)
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }

# Material Design 3
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" }

# レイアウト・描画・入力など、デバイス操作に必要な Compose UI の基本コンポーネント
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" }

# Android Studio での Preview サポート
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }

# UIテスト
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }

# Activity との統合
# ガイドでは Optional だが、作成時点では設定された状態になっている
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }

# プロジェクト作成時に設定されているが androidx.compose.ui に含まれているので実は不要。入っている理由は謎
androidx-compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
  • build.gradle.kts
implementation(platform(libs.androidx.compose.bom))
androidTestImplementation(platform(libs.androidx.compose.bom))

implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.ui)
// implementation(libs.androidx.compose.ui.graphics)

implementation(libs.androidx.compose.ui.tooling.preview)
debugImplementation(libs.androidx.compose.ui.tooling)

androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.test.manifest)

implementation(libs.androidx.activity.compose)

Material 関連

  • プロジェクト作成直後は、現時点(2024.07)で最新の Material3 に依存関係が設定された状態でプロジェクトが作成されています
  • Material3 を使わない(使えない)場合、 libs.androidx.compose.material3 でなく下記の依存関係を定義することで対応できるようです

ビルド設定

  • Material3 でなく Material2 を適用したい場合のバージョンカタログ
androidx-compose-material = { group = "androidx.compose.material", name = "material" }
  • Material ライブラリは不要だが Compose は使いたい場合のバージョンカタログ
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }

ConstraintLayout

  • デフォルトでは Compose で ConstraintLayout を利用するための設定が無いので、そのための依存関係を追加する必要があります

ビルド設定

  • バージョンカタログ
androidx-constraintlayout-compose = { group = "androidx.constraintlayout", name = "constraintlayout-compose", version.ref = "constraintLayoutCompose" }
  • build.gradle.kts
implementation(libs.androidx.constraintlayout.compose)

設定しておいた方がよさそうな依存関係

Fragment や Lifecycle 関連( ViewModelLiveData )と統合させる場合に必要です

ビルド設定

  • バージョンカタログ
# Fragment との統合(Activity.setContent に相当する Fragment.content 拡張関数を提供する)
androidx-fragment-compose = { group = "androidx.fragment", name = "fragment-compose", version.ref = "fragmentCompose" }

# ViewModel との統合
androidx-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleCompose" }

# LiveData との統合
androidx-livedata-compose = { group = "androidx.compose.runtime", name = "runtime-livedata" }
  • build.gradle.kts
implementation(libs.androidx.fragment.compose)
implementation(libs.androidx.viewmodel.compose)
implementation(libs.androidx.livedata.compose)

composeOptions のバージョンについて (Kotlin 2.0 未満の場合)

Kotlin のバージョンが2.0以降なら Compose Compiler Gradle plugin を使うことになるので、この内容は2.0未満のとき参考にして貰えるかと思います

  • Compose を使うためには build.gradle に composeOptions を設定しますが、そこに指定するバージョンと Kotlin のバージョンには互換性があります
  • 互換性の無いバージョンの組み合わせを設定すると、ビルドエラーが発生します
  • 詳細は Compose Compiler と Kotlin の互換性についてのリンク をご確認ください

カタログと依存関係の一例

Compose Compiler Version 1.5.14 に対して互換性のある Compatible Kotlin Version は、上記のリンクによると 1.9.24 なので、以下の設定でビルドに成功します

  • バージョンカタログ
[versions]
kotlin = "1.9.24"

[plugins]
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
  • build.gradle.kts
android {
    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }
}

関連リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0