Jetpack Compose をアプリに追加する

既存のプロジェクトで Jetpack Compose を使用する場合は、必要な設定と依存関係を指定してプロジェクトを構成する必要があります。

開発環境をセットアップする

適切な Android Studio バージョンをインストールする

Jetpack Compose で最適な開発エクスペリエンスを確保するには、Android Studio をダウンロードし、Android Studio のバージョンに対応する Android Gradle プラグインを設定する必要があります。

buildscript {
    ...
    dependencies {
        classpath "com.android.tools.build:gradle:7.4.0"
        ...
    }
}

Kotlin を設定する

プロジェクトで Kotlin 1.7.20 を使用していることを確認します。

plugins {
    id 'kotlin-android'
}

Gradle を設定する

クイック スタート ガイドに示すように、アプリの最小 API レベルを 21 以上に設定し、アプリの build.gradle ファイルで Jetpack Compose を有効にして、ライブラリの依存関係を追加する必要があります。

Compose でビューテーマを再利用する

Compose をプロジェクトに追加したばかりの場合は、Compose で独自のマテリアル テーマをゼロから書き換えるのではなく、ビューシステムで利用できるテーマを Compose で継承することをおすすめします。

Android アプリで MDC ライブラリを使用している場合、MDC Compose Theme Adapter ライブラリを使用すると、既存の View ベースのテーマにおける色、タイポグラフィ、シェイプのテーマ設定を、コンポーザブルで簡単に再利用できます。これを行うには MdcTheme API を使用します。

AppCompat XML テーマを使用している場合は、AppCompatTheme API を含む AppCompat Compose Theme Adapter を使用してください。

以下に示すように、必要な依存関係をアプリの build.gradle ファイルに追加します。

dependencies {
    // When using a MDC theme
    implementation "com.google.android.material:compose-theme-adapter:1.1.16"

    // When using a AppCompat theme
    implementation "com.google.accompanist:accompanist-appcompat-theme:0.25.1"
}

Compose への移行を開始する

Compose への移行を開始する方法については、移行戦略をご覧ください。ここでは、Compose をコードベースに安全かつ段階的に導入する方法について説明します。

ComposeView などの相互運用 API について詳しくは、相互運用 API ガイドをご覧ください。Compose のその他のリソース API について詳しくは、Compose のリソースガイドをご覧ください。

Compose と View が混在する UI をテストする

アプリの一部を Compose に移行した後は、何も破損していないことをテストで必ず確認する必要があります。

アクティビティまたはフラグメントで Compose が使用される場合、ActivityScenarioRule を使用する必要がありませんが createAndroidComposeRuleActivityScenarioRuleComposeTestRule と統合する)を使用すると、Compose コードと View コードを同時にテストできます。

class MyActivityTest {
    @Rule
    @JvmField
    val composeTestRule = createAndroidComposeRule<MyActivity>()

    @Test
    fun testGreeting() {
        val greeting = InstrumentationRegistry.getInstrumentation()
            .targetContext.resources.getString(R.string.greeting)

        composeTestRule.onNodeWithText(greeting).assertIsDisplayed()
    }
}

テストと Espresso との相互運用について詳しくは、Compose レイアウトのテストガイドをご覧ください。

アプリで Navigation コンポーネントを使用している場合は、「Compose を使用したナビゲーション」ガイドの相互運用性に関するセクションをご覧ください。

次のステップ

Compose について詳しくは、ドキュメントのインデックスをご覧ください。アプリに Compose を導入する方法はいくつかあります。詳しくは、アプリへの Compose の導入ガイドをご覧ください。このガイドには、他のガイド(既存のアーキテクチャでの Compose既存の UI での Compose など)へのリンクもあります。