Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Compose

形状とデータの依存関係を記述するコンポーズ可能な関数を使用して、UI をプログラムで定義します。
最新の更新 現在の安定版リリース 次のリリース候補 ベータ版リリース アルファ版リリース
2020 年 9 月 2 日 - - - 1.0.0-alpha02

構造

Compose は、androidx 内の 7 つの Maven Group ID を組み合わせたものです。各グループには対象とする機能のサブセットが含まれ、それぞれに固有のリリースノートがあります。

次の表に、各グループの説明と、それぞれのリリースノートのリンクを示します。

グループ説明
compose形状とデータの依存関係を記述するコンポーズ可能な関数を使用して、UI をプログラムで定義します。
compose.animationJetpack Compose アプリ内でアニメーションを作成して、ユーザー エクスペリエンスを拡充します。
compose.foundationすぐに使用できるビルディング ブロックで Jetpack Compose アプリを作成し、基盤を拡張して独自のデザイン システム要素を構築します。
compose.materialすぐに使用できるマテリアル デザイン コンポーネントで Jetpack Compose UI を構築します。Compose の上位レベルのエントリ ポイントであり、www.material.io のガイドラインと適合するコンポーネントを提供するように設計されています。
compose.runtimeCompose のプログラミング モデルと状態管理の基本ビルディング ブロックと、Compose コンパイラ プラグインがターゲットとするコアランタイム。
compose.uiレイアウト、描画、入力など、デバイスの操作に必要な Compose UI の基本コンポーネント。
uiJetpack Compose ライブラリを操作します。

依存関係の宣言

Compose への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.0"
        kotlinCompilerExtensionVersion "1.0.0-alpha02"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
    }
}

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.0.0

バージョン 1.0.0-alpha02

2020 年 9 月 2 日

androidx.compose:compose-compiler:1.0.0-alpha02 がリリースされました。1.0.0-alpha01 からの変更はありません。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください

バージョン 1.0.0-alpha01

2020 年 8 月 26 日

androidx.compose:compose-compiler:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください

バージョン 0.1.0-dev

バージョン 0.1.0-dev17

2020 年 8 月 19 日

androidx.compose:compose-compiler:0.1.0-dev17 がリリースされました。バージョン 0.1.0-dev17 に含まれるコミットについては、こちらをご覧ください

バージョン 0.1.0-dev16

2020 年 8 月 5 日

androidx.compose:compose-compiler:0.1.0-dev16 がリリースされました。バージョン 0.1.0-dev16 に含まれるコミットについては、こちらをご覧ください

ほとんどの Jetpack Compose パッケージは、以下の表に示すようにリファクタリングされました。

Jetpack Compose パッケージのリファクタリング

元のパッケージ名 新しいパッケージ名
androidx.animation androidx.compose.animation.core
androidx.ui.autofill androidx.compose.ui.autofill
androidx.compose androidx.compose.runtime
androidx.compose.dispatch androidx.compose.runtime.dispatch
androidx.ui.animation androidx.compose.animation
androidx.ui.core androidx.compose.ui
androidx.compose.ui.unit
androidx.compose.ui.graphics
androidx.ui.foundation androidx.compose.foundation
androidx.ui.geometry androidx.compose.ui.geometry
androidx.ui.graphics androidx.compose.ui.graphics
androidx.ui.input androidx.compose.ui.text.input
androidx.ui.intl androidx.compose.ui.text.intl
androidx.ui.layout androidx.compose.foundation.layout
androidx.ui.livedata androidx.compose.runtime.livedata
androidx.ui.material androidx.compose.material
androidx.ui.material.icons androidx.compose.material.icons
androidx.ui.rxjava2 androidx.compose.runtime.rxjava2
androidx.ui.savedinstancestate androidx.compose.runtime.savedinstancestate
androidx.ui.node androidx.compose.ui.node
androidx.compose.ui.input.pointer
androidx.ui.platform androidx.compose.ui.platform
androidx.ui.res androidx.compose.ui.res
androidx.ui.semantics androidx.compose.ui.semantics
androidx.ui.testutils androidx.compose.ui.input.pointer
androidx.ui.text androidx.compose.foundation.text
androidx.compose.ui.text
androidx.ui.text.platform androidx.compose.ui.text.android
androidx.compose.ui.platform
androidx.ui.unit androidx.compose.ui.unit
androidx.ui.util androidx.compose.ui.util
androidx.ui.viewinterop androidx.compose.ui.viewinterop
androidx.ui.viewmodel androidx.compose.ui.viewinterop
まだリファクタリングされていないパッケージ(変更なし)
androidx.ui.test
androidx.ui.tooling

Android Studio を使用している場合は、import ステートメントを下記のコード スニペットに置き換えて、Android Studio の [Optimize Imports] ボタンを使用できます。Android Studio でサポートされないケースについては、上記のパッケージ リストを参照してください。

  import androidx.compose.runtime.*
  import androidx.compose.animation.*
  import androidx.compose.animation.core.*
  import androidx.compose.foundation.*
  import androidx.compose.foundation.gestures.*
  import androidx.compose.foundation.layout.*
  import androidx.compose.foundation.lazy.*
  import androidx.compose.foundation.shape.*
  import androidx.compose.material.*
  import androidx.compose.material.icons.*
  import androidx.compose.material.icons.filled.*
  import androidx.compose.ui.*
  import androidx.compose.ui.geometry.*
  import androidx.compose.ui.draw.*
  import androidx.compose.ui.graphics.*
  import androidx.compose.ui.graphics.drawscope.*
  import androidx.compose.ui.graphics.painter.*
  import androidx.compose.ui.graphics.vector.*
  import androidx.compose.ui.layout.*
  import androidx.compose.ui.platform.*
  import androidx.compose.ui.res.*
  import androidx.compose.ui.text.*
  import androidx.compose.ui.text.font.*
  import androidx.compose.ui.text.style.*
  import androidx.compose.ui.unit.*
  import androidx.compose.ui.util.*
  import androidx.compose.ui.viewinterop.*
  import androidx.ui.tooling.preview.*

バージョン 0.1.0-dev15

2020 年 7 月 22 日

androidx.compose:compose-compiler:0.1.0-dev15 がリリースされました。バージョン 0.1.0-dev15 に含まれるコミットについては、こちらをご覧ください

Jetpack Compose のほとんどのアーティファクトは、以下の表に示すようにリファクタリングされています。

このリリースでは、アーティファクト名のみがリファクタリングされたことにご注意ください。将来のリリースでは、新しいアーティファクト名に合わせてパッケージ名が更新されます。

Jetpack Compose アーティファクトのリファクタリング

古いアーティファクト 新しいアーティファクト
androidx.compose:compose-dispatch androidx.compose.runtime:runtime-dispatch
androidx.compose:compose-runtime androidx.compose.runtime:runtime
androidx.ui:ui-animation androidx.compose.animation:animation
androidx.ui:ui-animation-core androidx.compose.animation:animation-core
androidx.ui:ui-core androidx.compose.ui:ui
androidx.ui:ui-foundation androidx.compose.foundation:foundation
androidx.ui:ui-geometry androidx.compose.ui:ui-geometry
androidx.ui:ui-graphics androidx.compose.ui:ui-graphics
androidx.ui:ui-layout androidx.compose.foundation:foundation-layout
androidx.ui:ui-livedata androidx.compose.runtime:runtime-livedata
androidx.ui:ui-material androidx.compose.material:material
androidx.ui:ui-material-icons-core androidx.compose.material:material-icons-core
androidx.ui:ui-material-icons-extended androidx.compose.material:material-icons-extended
androidx.ui:ui-rxjava2 androidx.compose.runtime:runtime-rxjava2
androidx.ui:ui-saved-instance-state androidx.compose.runtime:runtime-saved-instance-state
androidx.ui:ui-text androidx.compose.foundation:foundation-text
androidx.ui:ui-text-android androidx.compose.ui:ui-text-android
androidx.ui:ui-text-core androidx.compose.ui:ui-text
androidx.ui:ui-unit androidx.compose.ui:ui-unit
androidx.ui:ui-util androidx.compose.ui:ui-util
まだリファクタリングされていないアーティファクト(変更なし)
androidx.compose:compose-compiler
androidx.ui:ui-test
androidx.ui:ui-tooling

依存関係の更新

  • 0.1.0-dev15 バージョンの Compose を使用するには、上記の依存関係の宣言で示されている新しいコード スニペットに従って、依存関係を更新する必要があります。

バージョン 0.1.0-dev14

2020 年 6 月 24 日

androidx.compose:compose-compiler:0.1.0-dev14androidx.compose:compose-runtime:0.1.0-dev14 がリリースされました。バージョン 0.1.0-dev14 に含まれるコミットについては、こちらをご覧ください

API の変更

  • Recompose composable は、有用な抽象化ではなくなりました。ほとんどの場合、再コンポーズは、MutableState 割り当ての結果として生じます。それ以外の場合は、invalidate 関数を使用して、現在のスコープの再コンポーズをトリガーすることをおすすめします。(Ifc992
  • Observe は有用な抽象化ではなくなりました。Observe を複製する必要がある場合は、コンポーズ可能なラムダ パラメータを実行するコンポーズ可能な関数を作成することにより、Observe の実装を複製できます。例: @Composable fun Observe(body: @Composable () -> Unit) = body()I40d37
  • @ComposableContract(restartable=false) が優先され、@Direct が非推奨になりました(If4708

バグの修正

  • androidx.ui.foundation.TextFieldValueandroidx.ui.input.EditorValue が非推奨になりました。このタイプを使用する TextFieldFilledTextFieldCoreTextField の composable も非推奨になりました。代わりに androidx.ui.input.TextFieldValue を使用してください(I4066db/155211005)。

外部からの協力

  • 初期値のない Flow<T>.collectAsState() が非推奨になりました。代わりに StateFlow<T> を使用するか、明示的な初期値を渡してください。(I63f98b/157674865
    • 以下の変更に寄与した Square の Zach Klippenstein 氏に感謝いたします。

バージョン 0.1.0-dev13

2020 年 6 月 10 日

androidx.compose:compose-compiler:0.1.0-dev13androidx.compose:compose-runtime:0.1.0-dev13 がリリースされました。バージョン 0.1.0-dev13 に含まれるコミットについては、こちらをご覧ください

既知の問題

  • アプリが androidx.core:core-ktx:1.2.0 に依存していて、複数のフォント / フォントの太さを含む FontFamily が使用されている場合、フォント選択が通常のフォントの太さでレンダリングされます。Google はこの問題の解決に取り組んでまいりますが、現時点では回避策として androidx.core:core-ktx:1.2.0-alpha01 または androidx.core:core-ktx:1.1.0 を使用してください。

バージョン 0.1.0-dev12

2020 年 5 月 27 日

androidx.compose:compose-compiler:0.1.0-dev12androidx.compose:compose-runtime:0.1.0-dev12 がリリースされました。バージョン 0.1.0-dev12 に含まれるコミットについては、こちらをご覧ください

API の変更

  • Compose のコンパイラにおけるコード生成の仕様を変更しました。変更前の Compose コンパイラでは、コンポーズ可能な関数の呼び出し部分を変換していました。変更後はコンポーズ可能な関数の本文を変換し、呼び出し部分での変換は一部を除いて行いません。

    つまり、Compose ランタイムとのロジック上のやり取りは、呼び出し部分ではなく関数本文の開始部分で発生します。

    この変更は Compose の使用方法に関わらずソース互換であり、Compose を使用していても通常はコードを更新する必要はありません。

    この処理をサポートするため、すべてのコンポーズ可能な関数の JVM の署名が変更されました。コンポーズ可能な関数でパラメータを 1 つ受け取る場合、3 つのパラメータを受け取る関数に変換されます。追加されるパラメータは Composer と「key」整数です。ビットマスク整数として、呼び出しを通じてメタデータを伝達する際に使用されます。

    なお、デフォルトの引数がコンポーズ可能な関数に変換されるようになっています。変換時に、関数の合成によるオーバーロードがデフォルトで行われることはないため、定義される関数の数は少なくなります。

    今回の変更による確認済みの意図的な動作変更は次のとおりです。

    1. 一部の呼び出しが、変更前にはスキップされなかった箇所でスキップされる。
    2. デフォルトの引数を含む式で、コンポーズ可能な式が正しく登録および処理される。

    最適化に関しては、次の内容が含まれます。

    1. パラメータの比較結果が、コールグラフを介して他のコンポーズ可能な関数に伝達される。その結果、実行時の比較処理が減ってスロット テーブルのサイズが小さくなる。また、スキップされるコンポーズ可能な関数が以前よりも増える。
    2. コンパイル時に「静的」と判断されたパラメータが、実行時に比較または保存されなくなる。その結果、比較処理が減ってスロット テーブルのサイズが小さくなる。
    3. 関数の本文に制御フロー構造が使用され、生成されるグループの数が最小限に抑えられる。その結果、スロット テーブルのサイズが小さくなり、実行時の処理が減少する。
    4. 関数に渡される未使用のディスパッチ パラメータとレシーバ パラメータが、関数の本文内で使用されていない場合には、関数のスキップを行うかどうかの判断には用いられない。

    互換性を破る変更のほとんどは、コンパイラが直接ターゲットとする API に関するものであり、Compose の一般的な使用には影響しません。

    1. Composer::startExpr が削除されました。
    2. Composer::endExpr が削除されました。
    3. Composer::call のサポートが終了しました。
    4. key の non-varargs のオーバーロードが削除されました。今後は vararg バージョンを使用してください。
    5. Pivotal アノテーションのサポートが終了しました。代わりに key を使用してください。
    6. ScopeUpdateScope::updateScope が Function1 ではなく Function3 を想定するように変更されました。
    7. restartableFunction と restartableFunctionN が追加のコンパイル時パラメータを含むように更新されました。

    I60756b/143464846

  • 最近導入された StateFlow 用のアダプタを追加しました。State が返される際に null になることがないように、初期値を事前入力できます(I61dd8b/156233789)。

@Model アノテーションのサポートが終了

  • @Model アノテーションのサポートが終了しました。代わりに statemutableStateOf を使用してください。このサポート終了は、慎重に検討されたうえで決定されたものです。

    サポート終了の理由

    主な理由を以下に示します。

    • API に関する項目と概念について、指南が必要な内容を減らす。
    • 他の同等のツールキット(Swift UI、React、Flutter)との連携をより緊密にする。
    • サポート終了の判断を取り下げることができる。@Model はいつでも元に戻すことができます。
    • @Model の設定に関して、以下のようなまれな使用例をなくし、回答の難しい質問が出ないようにする。
      • @Model データクラス、等式、ハッシュコードなど。
      • 一部のプロパティを監視対象とし、その他のプロパティは監視対象としない方法。
      • 監視を行う際に使用する構造等価式と参照等価式の指定方法。
    • システムへの「過度な期待」を減らす。システムの能力が過信されること(リストの差分取得の方法がすでにあると考えるなど)が少なくなるようにします。
    • 監視の粒度をより直感的にする。
    • リファクタリングにより、変数をクラスのプロパティにできる可能性を高める。
    • State を個別に操作して最適化が行える可能性を高める。
    • エコシステムの他の部分との連携をより緊密にし、State が変更不能であることによる曖昧さを軽減する(変更可能な State を活用する)。

    移行メモ

    @Model の既存の使用例については、下の 2 つの方法のいずれかに、ほぼすべて容易に変換できます。以下に、2 つのプロパティを含み、コンポーズ可能な関数内で使用される @Model クラスを例として示します。

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    方法 1: State<OriginalClass> を使用してコピーを作成する

    このアプローチは、Kotlin のデータクラスを使用することで簡単に実施できます。基本的には、以前のすべての var プロパティをデータクラスの val プロパティにして、remember ではなく state を使用します。そして、データクラスの copy(...) コンビニエンス メソッドを使用して、元のクラスのコピーに state の値を割り当てます。

    このアプローチが機能するのは、State インスタンスが作成されたスコープと同じスコープで、クラスに対する変更だけが行われた場合であることに注意してください。スコープ外でクラスの変更が内部的に行われており、その監視に依存している場合は、次のアプローチを使用します。

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    方法 2: mutableStateOf とプロパティ委任を使用する

    このアプローチは、Kotlin でのプロパティ委任と mutableStateOf API を使用することで簡単に実施できます。コンポジションの外部に MutableState インスタンスを作成することが可能です。基本的には、元のクラスのすべての var プロパティを、プロパティ委任として mutableStateOf を持つ var プロパティに置き換えます。このアプローチには、クラスの使用方法の変更が一切なく、クラスの内部実装のみが変更されるという利点があります。ただし、各プロパティが個別に監視および登録されるようになるため、元の例とまったく同じ動作にはなりません。リファクタリング後に再度コンポジションが作成される際には、対象が限定されるという利点もあります。

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    I409e8b/152050010b/146362815b/146342522b/143413369b/135715219b/143263925b/139653744

バグの修正

  • サポートが終了した DrawBackground API が削除され、Modifier の drawBackground 拡張機能 API に置き換えられました。色、ブラシ、ペイントに関する drawBackground 実装をリファクタリングし、コードパスを削減するとともに、コンポジションの一部として Modifier を作成する必要をなくしました。(I0343ab/155999867

バージョン 0.1.0-dev11

2020 年 5 月 14 日

androidx.compose:compose-compiler:0.1.0-dev11androidx.compose:compose-runtime:0.1.0-dev11 がリリースされました。バージョン 0.1.0-dev11 に含まれるコミットについては、こちらをご覧ください

API の変更

  • Flow 用のアダプタを追加しました。使用例:

    val value by flow.collectAsState()
    

    If2198b/153375923

バグの修正

  • キャンバスを公開するハイレベルの Compose API を更新して、代わりに CanvasScope を公開するようにしました。これにより、ユーザーが独自の Paint オブジェクトを維持管理する必要がなくなります。引き続きキャンバスの利用が必要なユーザーは、drawCanvas 拡張メソッドを使用できます。このメソッドにより、対象のキャンバスに対して Draw コマンドを実行するコールバックが行われます。(I80afd
  • WithConstraints API の後置ラムダ式が変更されました。2 つのパラメータに代わってレシーバ スコープが設けられ、Constraints と LayoutDirection に加え、Dp 単位での指定ができる minWidthmaxWidthminHeightmaxHeight プロパティが用意されました。(I91b9ab/149979702
  • 対称パディング修飾子を追加しました。(I39840

バージョン 0.1.0-dev10

2020 年 4 月 29 日

androidx.compose:compose-compiler:0.1.0-dev10androidx.compose:compose-runtime:0.1.0-dev10 がリリースされました。バージョン 0.1.0-dev10 に含まれるコミットについては、こちらをご覧ください

新機能

  • 新しいバージョンの Kotlin コンパイラの IR バックエンドをベースに再構築されたことにより、以前 IR バックエンドで動作しなかった多くの機能(コンポーズ可能でないコルーチンなど)が動作するようになりました。これは、暗号のように不可解な「バックエンド内部エラー」メッセージを目にすることが少なくなり、苦労してコードを IR モジュールと非 IR モジュールに分ける必要がなくなったことを意味します。ただし、IR バックエンドはまだ試験運用版であり、バグも(かなり減ったとはいえ)まだいくつか残っています。試すことはできますが、未完成であることに留意してください。

バージョン 0.1.0-dev09

2020 年 4 月 15 日

androidx.compose:compose-compiler:0.1.0-dev09androidx.compose:compose-runtime:0.1.0-dev09 がリリースされました。バージョン 0.1.0-dev09 に含まれるコミットについては、こちらをご覧ください

API の変更

  • [Mutable] State プロパティ デリゲート演算子が、Kotlin 1.4 のプロパティ デリゲート最適化に対応するため、拡張機能に移動されました。by state { ... } または by mutableStateOf(...) を引き続き使用するには、呼び出し元でインポートを追加する必要があります。(I5312c

バグの修正

  • Alignment ではなく垂直方向または水平方向の Alignment を受け入れるように、wrapContentWidthwrapContentHeight を更新しました。垂直方向または水平方向の Alignment を受け入れるように、重力修飾子を更新しました。カスタムの連続 Alignment をサポートすることを目的として RowColumnStack を更新しました。(Ib0728
  • ui-text モジュールの名前を ui-text-core に変更しました(I57dec
  • DrawModifier API を改良しました。(Ibacedb/152919067
    • draw() ContentDrawScope のレシーバ スコープを作成しました。
    • draw() のすべてのパラメータを削除しました。
    • DrawScope のインターフェースは以前の CanvasScope と同じです。
    • ContentDrawScopedrawContent() メソッドが追加されました
  • ColoredRect が非推奨になりました。代わりに Box(Modifier.preferredSize(width, height).drawBackground(color)) を使用してください。(I499fab/152753731

バージョン 0.1.0-dev08

2020 年 4 月 1 日

androidx.compose:compose-compiler:0.1.0-dev08androidx.compose:compose-runtime:0.1.0-dev08 がリリースされました。バージョン 0.1.0-dev08 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 修飾子と演算子を工場出荷時の拡張機能に置き換えました(I225e4
  • RowScope と ColumnScope のメンバーに、行と列の外部からアクセスできるようになりました。(I3a641

バージョン 0.1.0-dev07

2020 年 3 月 18 日

androidx.compose:compose-compiler:0.1.0-dev07androidx.compose:compose-runtime:0.1.0-dev07 がリリースされました。バージョン 0.1.0-dev07 に含まれるコミットについては、こちらをご覧ください

API の変更

  • androidx.compose.ViewComposerandroidx.ui.node.UiComposer に移動しました。(Idef00
  • androidx.compose.Emittable を削除しました。ComponentNode と重複していました。(Idef00
  • androidx.compos.ViewAdapters を削除しました。サポート対象のユースケースではなくなりました。(Idef00
  • Compose.composeInto のサポートが終了しました。代わりに setContent または setViewContent を使用してください。(Idef00
  • Compose.disposeComposition のサポートが終了しました。代わりに、setContent によって返される Compositiondispose メソッドを使用してください。(Idef00
  • androidx.compose.Compose.subcomposeIntoandroidx.ui.core.subcomposeInto に移動しました。(Idef00
  • ComponentNode#emitInsertAt の名前を ComponentNode#insertAt に変更しました。(Idef00
  • ComponentNode#emitRemoveAt の名前を ComponentNode#removeAt に変更しました。(Idef00
  • ComponentNode#emitMode の名前を ComponentNode#move に変更しました。(Idef00

バグの修正

  • LayoutFlexible の名前を LayoutWeight に変更しました。このパラメータを補うために tight パラメータの名前を変更しました。(If4738
  • WithConstraint に LayoutDirection パラメータが追加されました(I6d6f7

バージョン 0.1.0-dev06

2020 年 3 月 4 日

androidx.compose:compose-compiler:0.1.0-dev06androidx.compose:compose-runtime:0.1.0-dev06 がリリースされました。バージョン 0.1.0-dev06 に含まれるコミットについては、こちらをご覧ください

新機能

  • ComposeFlags.COMPOSER_PARAM フラグを true に更新しました。これにより、compose プラグインのコード生成方法が変更されます。概略としては、追加の合成パラメータで生成された @Composable 関数が後続の @Composable の呼び出しに渡され、ランタイムで実行が適切に管理されるようになります。これは互換性を破る重大なバイナリの変更ですが、compose のすべての許可される使用方法でソースレベルの互換性が保持されます。(aosp/1226314

バージョン 0.1.0-dev05

2020 年 2 月 19 日

androidx.compose:compose-compiler:0.1.0-dev05androidx.compose:compose-runtime:0.1.0-dev05 がリリースされました。バージョン 0.1.0-dev05 に含まれるコミットについては、こちらをご覧ください

API の変更

  • アンビエント API を大幅に変更しました。詳細については、ログと Ambient<T> のドキュメントをご覧ください(I4c7eeb/143769776

バグの修正

  • ButtonStyle を別の関数に置き換え、テキスト(文字列)オーバーロードを削除しました。使用方法については、更新済みのサンプルをご覧ください。(If63abb/146478620b/146482131

バージョン 0.1.0-dev04

2020 年 1 月 29 日

androidx.compose:compose-compiler:0.1.0-dev04androidx.compose:compose-runtime:0.1.0-dev04 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

API の変更

  • areEquivalent コールバックが MutableState に追加されました(Ic2ef8
  • コンポーネントとリファクタリングの最上位の Composition API が削除されました(I1f22e
  • コンポーザー パラメータでコンポーズ可能な呼び出しを変換(I1691e
  • Composition クラスを削除して Composer 基本クラスに置き換え(Ieadbf
  • State<T>MutableState<T> を安定したタイプとしてマーク(b/146557624
  • currentComposerIntrinsic と、適切なパラメータの受け渡しのテストを追加(I133f0
  • ModelObserver がシングルスレッド化されました(Ica33d
  • コンポーズ可能なインライン呼び出しに関連するグループを適切に生成(Ibf739
  • 使用されていない EffectsDsl アノテーションを削除(Ibe81d
  • @Stable アノテーションが追加され、修飾子が安定しているものとしてマークされました(Iacba7
  • MutableState API、State API、mutableStateOf API が導入されました(I98291
  • @Composable への影響がリファクタリングされました(Ie2686
  • ObserverMapModelObserver のパフォーマンスが改善されました(Ieb9b6
  • 読み取り監視が変更され、ComponentNode 以外を監視できるようになりました(Ia4d93