Jetpack Compose for XR

Android XR の空間機能を活用する空間 UI レイアウトを宣言的に構築します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2026 年 10 月 21 日 - - 1.0.0-beta02 -

依存関係の宣言

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

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

Groovy

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-beta02"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta02"
}

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-beta02")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta02")
}

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

フィードバック

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

新しい問題を報告する

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

バージョン 1.0

バージョン 1.0.0-beta02

2026 年 10 月 21 日

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

API の変更

  • ライブラリが Kotlin 2.2 をターゲットとし、kotlinc 2.2 が必要になりました(I82396、b/498369605)
  • FollowMode.soft() の halfLifeMs パラメータの名前を halfLifeMillis に変更しました。(I39187)
  • PitchLimits を @JvmInline value class に変換し、2 つの浮動小数点数を Long にパックして、オブジェクトの割り当てを排除しました。(Id43c3)
  • FollowMode.soft の新しいパラメータ(halfLifeMs、startDelay、startThresholds)を追加しました。smoothStep アルゴリズムから exponentialDecay アルゴリズムに移行したため、不要になったパラメータ durationMs を削除しました。(If0140)
  • 非推奨の SpatialActivityPanel オーバーロードを削除しました。代わりに、SpatialActivityPanelController を受け入れる SpatialActivityPanel のオーバーロードを使用します。(I5abc3)
  • FullSpaceMode の 1 つの Activity 内で 3D と 2D のコンポーズ可能なコンテンツ間の遷移を有効にします。この変更は SpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled によってゲート制御されます。(I4e237)
  • コンテンツのフォローをサポートするために、FollowTarget パラメータを受け取る試験運用版の Subspace オーバーロードを公開しました。(Iec1a9)
  • 非推奨の移動可能な修飾子を削除しました。代わりに、新しい MovePolicy をパラメータとして受け取る新しい movable 修飾子を使用してください。(Ib135d)
  • サポートが終了した DragPolicy を削除しました。代わりに SubspaceModifier.movable() を使用してください。(I108d4)
  • ステートレスな Slider と RangeSlider のオーバーロードを非推奨とし、ステートフルなバージョンに置き換えました。RangeSliderState の activeRangeStart と activeRangeEnd の名前を startValue と endValue に変更し、DeprecationLevel.HIDDEN を使用して、以前の未昇格の試験運用版 Slider API を非推奨にしました。(If8995)

バグの修正

  • poseInActivitySpace を導入して RotateToLookAtUser を修正し、アンカーやユーザーにアタッチされているものを含むすべてのサブスペース タイプで、ポーズが正しく計算されるようにしました。Ica367b
  • Orbiter が大きなパネルにアタッチされている場合に Constraints がクラッシュする問題を修正しました(I8c4bf)
  • SubspaceLayoutNode で removeAll() が不要な ArrayList 割り当てを引き起こすバグを修正しました。深度計算のパフォーマンスも修正しました。I34a10a
  • androidx.lifecycle:lifecycle-runtime の依存関係を 2.10.0 に更新しました。このバージョンは、バンドルされたライフサイクル ランタイム lint チェックを AGP バージョン 9.5.0-alpha04 以降で実行するために必要です。(I99bfd、b/556807521)
  • AudioOutputProvider に関連する kdocs を改善し、複数の ExoPlayer インスタンスで再利用すべきではないことを強調しました(I6b18e)。
  • KDoc のスペルと文法に関する軽微な問題を修正しました(Id3ba6)

既知の問題

  • このバージョンの androidx.xr.compose は、既知のメモリリークがある androidx.xr.scenecore:1.0.0-rc01 に依存しています。ビルド構成で、SceneCore 依存関係をバージョン 1.0.0 に明示的にオーバーライドできます。このバージョンには、メモリリークの修正が含まれています。

バージョン 1.0.0-beta01

2026 年 9 月 23 日

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

API の変更

  • 非推奨の DragPolicy を削除しました。代わりに SubspaceModifier.movable() を使用してください。(I108d4)
  • 非推奨の ResizePolicy と、SpatialPanel および SpatialExternalSurface でのその使用を削除しました。非推奨の SubspaceModifier.resizable 関数を削除しました。代わりに、新しい SubspaceModifier.resizable と新しい ResizePolicy を使用してください。(I59e6b)
  • ピッチ トラッキングを個別に有効または無効にできる isPitchUpdateEnabled パラメータを追加しました。(Ie9e86)
  • pitchLimits の null 可能性を削除し、PitchLimits.UNCONSTRAINED の名前を PitchLimits.FullRange に変更しました。(I0154f)
  • ExposedDropdownMenu がメンバーではなく ExposedDropdownMenuBoxScope の拡張関数になりました。新しいインポートでコードを更新する必要がある場合があります。(Ie8a65)
  • 非推奨の SurfaceProtection クラスを削除しました。代わりに SpatialExternalSurfaceProtection を使用してください。(Iab2c6)
  • OrbiterPoseProvider を受け取る Orbiter 関数は非推奨となり、SpatialAlignment を使用する関数が推奨されるようになりました。(I4d12b)
  • SpatialActivityPanel で、埋め込みアクティビティを起動して管理するために SpatialActivityPanelController(rememberSpatialActivityPanelController を使用してインスタンス化)が必要になりました。(Id25c6)
  • rotateToLookAtUser から upDirection パラメータを削除し、回転制約パラメータ(isYawUpdateEnabled と pitchLimits)を追加しました。(I1370a)

バグの修正

  • InteractionPolicy に関するさまざまな問題を修正しました。コンポーザブルまたは子(Orbiter など)が破棄シーケンスを開始した直後に入力イベントが発生すると、クラッシュが発生していました。また、子がホバーイベントを受け取る問題を修正しました。(Ifc477)
  • 視野角の小さいデバイスでクリッピングが発生しないよう、RotateToLookAtUserActivity のパネルサイズを縮小しました。(I8d672)

既知の問題

  • Compose XR パネルには、1 つの Activity で多数のパネルを作成すると、パネルが破棄された後でも、表示されている内容が破損する可能性があるという問題があります。

バージョン 1.0.0-alpha17

2026 年 8 月 12 日

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

API の変更

  • Meter 値クラスを削除します。これは Scenecore の virtualPixelDensity に置き換えられます。(I690ee)
  • SpatialGltfModel API が試験運用版になり、使用するにはオプトインが必要になりました。(I4557e)
  • system のサイズ変更を null 許容にしました(Ib0093)
  • テスト用に SubspaceSemanticsInfo で Density を公開しました。(I2e826)
  • ResizePolicy のデフォルト オプションの名前を system に変更し、パラメータなしの新しい Default オプションを追加しました(Ic8b16)
  • FollowTarget を試験運用版としてマークしました。FollowingSubspace API 全体が試験運用版になりました。(Id4ee3)
  • GltfAnimation API を削除しました(Ic2894)
  • パラメータ化された MovePolicy.default() メソッドの名前を MovePolicy.system() に変更しました。標準のデフォルトの移動動作を表す val MovePolicy.Default プロパティを導入しました。(Iedcc9)
  • ExperimentalMoveAnchorPolicy のオプトイン要件を PlaneSemantic と PlaneOrientation に拡大(Ief927)
  • VolumeConstraints.offset から resetMins を削除しました(Ib2f2f)
  • 非推奨となった SceneCoreEntitySizeAdapter 関数を削除しました。(Ib6722)
  • 非推奨となった Subspace オーバーロードを allowUnboundedSubspace で削除しました。(I8e97f)
  • 非推奨となったセマンティクス修飾子のオーバーロードを削除しました。(I4ac10)

バグの修正

  • InteractionPolicy がアタッチされた Composable の子が入力イベントをトリガーする問題を修正しました(Icdba6)

バージョン 1.0.0-alpha16

2026 年 7 月 15 日

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

API の変更

  • ComponentOverride API を削除しました(I820c4)
  • GltfAnimation API と SpatialGltfModelAnimation API が試験運用版としてマークされました。一部のプロパティはゲッターに変換されました。(I8d689、b/524771027)
  • メートルとピクセルの変換を一定にすることで、全体的な密度の動作を修正しました。Meter.kt を非推奨にしました。代わりに Session.scene.virtualPixelDensity を使用できるようになりました。(I122ff、b/430097855、b/474168798)
  • 2 つの修飾子ではなく ResizePolicy を使用するように、サイズ変更可能な修飾子を更新しました(I7fb0f、b/496257436、b/519672992)
  • SubspaceAssertions.kt のすべてのパブリック浮動小数点ディメンションと位置の等価性アサーションに、許容値 Dp = Dp(0.5f) パラメータを追加しました。デフォルトの許容動作(0.5.dp)については、ドキュメントに詳しく記載されています。(I266cb、b/521491915)
  • movePolicy パラメータを含む movable オーバーロードを追加し、transformingMovable と movable を非推奨にしました(Ic88c1、b/481781189)
  • Material Expressive 仕様に準拠した、標準リストアイテムとセグメント化リストアイテムの新しい非インタラクティブ バリアントを追加しました。表現力のないバージョンは非推奨になりました。(Ide4de、b/491994186)
  • サブスペースの場合、allowUnboundedSubspace パラメータは非推奨になり、非表示になりました。無制限の動作は、Subspace 修飾子で SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity) を使用して実現できるようになりました。allowUnboundedSubspace パラメータが FollowingSubspace から削除されました。(Ia72ae、b/433624021)
  • Session.create を suspend 関数に変換しました。(I5d27f)
  • ExoPlayer または SoundEffectPlayer を介してオーディオ再生を空間化できる SubspaceModifier.spatializedAudioOutput を追加しました(I46697、b/489421980、b/497867019)。
  • ComponentActivity.requestHomeSpace() と requestFullSpace() を更新し、ステータス確認のために SpaceRequestResult を返すようにしました。(If1672)
  • AnchorEntity の名前を AnchorSpace に更新しました(Ifa95e、b/513619219)
  • SpatialGltfModelSource の fromResource メソッドの制限を解除しました(I1f5a1、b/503047416)
  • SubspaceSemanticsMatcher メンバーは公開されています。description プロパティ、コンパニオン ファクトリー メソッド(expectValue、keyIsDefined、keyNotDefined)、メンバー関数(matches、matchesAny)、演算子(and、or、not)。(I972a4、b/460427288)
  • SubspaceModifier.semantics、SubspaceModifier.testTag、SubspaceSemanticsInfo、SubspaceSemanticsModifierNode を更新し、キュレートされた空間セマンティクス タイプを使用するようにしました。(I80dea、b/460427288)
  • SpatialAlignment の position を align に名前変更し、個々の方向オフセット メソッドを削除して、統合された align API を優先するようにしました。(I9bdb2、b/479805937)
  • SpatialConfiguration から非推奨の Space Mode API を削除しました。(I1ef5c、b/458712461)
  • SubspaceSemanticsConfiguration を導入しました。これは、Spatial ノードのセマンティクス プロパティの構成です。このクラスは、3D セマンティクスのクエリメソッドを安全に公開し、基盤となる 2D セマンティクス機能を外部のコンシューマーに漏洩しないようにします。(Id025e、b/460427288)
  • SubspaceSemanticsPropertyReceiver を導入しました。これは、3D レイアウト コンテナのプロパティを有効なフィールド(最初は testTag と contentDescription)に制限する専用のラッパーです。(I5cf5c、b/460427288)

バグの修正

  • セマンティック修飾子の hasContentDescription を更新し、デフォルトで部分文字列の一致を使用するようにしました。(I08214)
  • 制限付きの FollowBehavior.ExponentialDecay() を追加しました。これは、弾性物理学に基づくソフト フォロー動作を提供します。(I7449c、b/485639909、b/500493335)

ほとんどの API がこの影響を受けます。具体的には、LocalSession CompositionLocal と、LocalSession に依存するすべての CompositionLocals(LocalSpatialConfiguration、LocalSpatialCapabilities など)は、Session が初期化される前に null またはその非 XR バージョンに解決されるようになります。

Session が利用可能になると、正しい状態で再コンポジションがトリガーされます。(I0cfa4、b/514712835、b/514712835)

  • 一時停止の動作、キャンセル、同時実行に関する ComponentActivity.requestHomeSpace と ComponentActivity.requestFullSpace のドキュメントを明確にしました。CancellationException の伝播を検証するテストを更新しました。(I22f75、b/493289528)

バージョン 1.0.0-alpha15

2026 年 6 月 17 日

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

API の変更

  • ResizePolicy と古いサイズ変更可能な修飾子を非推奨とし、新しい SubspaceModifier.resizable オーバーロードと SubspaceModifier.transformingResizable に置き換えました。(I9e4bc)
  • SpatialGltfModel API を更新しました。SpatialGltfModelSource.fromResource を介してリソースからモデルを読み込むためのサポートを追加しました。SpatialGltfModelAnimation で speed の名前を playbackSpeed に変更し、resume() メソッドを追加しました。SpatialGltfModelStatus.Loaded と Loading がオブジェクトになりました。(I523de)
  • rotateToLookAtUser を試験運用版 API としてマークしました。(I86c16)
  • 保護された変数 targetCurrentPose をローカル変数 currentTargetPoseMeter に移動して名前を変更しました。(Ia557c)
  • SpatialPanel と SpatialExternalSurface の kdoc を更新し、オブジェクトがレイアウト サイズ内でレンダリングされる場所を追加しました(I72104)。
  • SpatialGltfModelState 内に SpatialGltfModel の読み込みロジックをカプセル化し、失敗時の動作を明確にしました。(Ibe98b)
  • SubspaceModifer.size の KDocs で depth を明確にしました(I0f84f)

バージョン 1.0.0-alpha14

2026 年 5 月 19 日

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

API の変更

  • デフォルトのシステム処理による 3D 移動用に transformingMovable を導入し、カスタム移動動作を処理するために movable の新しいオーバーロードを導入しました。(I50960)
  • SpatialGltfModel.fromData() を削除しました。(I4d083)
  • 新しい修飾子ノード インターフェース SubspaceMeasuredSizeAwareModifierNode を追加しました。これは、測定パスの後に onRemeasured コールバックを提供します。SubspaceLayoutAwareModifierNode がこの新しいインターフェースを拡張するようになりました。onSizeChanged 修飾子が onRemeasured を使用するように更新され、配置後ではなく測定直後にコールバックがトリガーされるようになりました。(Iafbae)
  • InteractionPolicy を Interface に更新しました(I0ff30)
  • Compose compileSdk を API 37 に更新しました。つまり、Compose を使用する場合は、AGP の最小バージョン 9.2.0 が必要です。(Id45cd)
  • Size の KDocs を更新しました(Iefa9a)

バージョン 1.0.0-alpha13

2026 年 5 月 6 日

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

API の変更

  • Orbiter API には追加の変更が予定されています。Orbiter のサポート終了通知を抑制し、今後のリリースで Orbiter の変更に注意することをおすすめします。
  • SceneCoreEntity を使用して glTF をレンダリングしている場合は、GltfModel.create 呼び出しの parent パラメータに session.scene.activitySpace を渡して、glTF がレンダリングされるようにする必要があります。
  • デベロッパーが Compose for XR アプリに Gltf を追加できるように、SpatialGltfModel API を追加しました。デベロッパーは、Gltf モデル内のアニメーションとノードをクエリすることもできます。(I8b542、b/495422586)
  • SceneCoreEntitySizeAdapter をクラスからインターフェースに変更しました(I5a784、b/475292310)
  • SurfaceProtection の名前を SpatialExternalSurfaceProtection に変更しましたSpatialExternalSurface の KDocs を更新しました(Ifad0a、b/485231082)
  • currentWindowAdaptiveInfo を非推奨にし、その V2 を導入しました(I40ecf、b/424442112)
  • resizable 修飾子が公開され、グループ(SpatialRow など)に適用できるようになりました。(I2bcf6、b/348483527、b/489753178、b/479530787)
  • movable 修飾子が公開されました。この修飾子は、現時点では SpatialPanels と SpatialExternalSurface で適切に機能しますが、すべての SubspaceComposables で適切にサポートされるようにすることを目的としています。(I9a3cd、b/479530787、b/478935063、b/478935063)
  • SpatialEnterTransition と SpatialExitTransition が @Immutable としてマークされました(If1710、b/487757837)
  • SpatialGltfModel API は、追加のテストが保留されているため、このリリースでは制限付きとしてマークされています。(Ibf003、b/466090694)
  • DeviceTrackingMode.LAST_KNOWN の名前を SPATIAL_LAST_KNOWN に変更し(非推奨のフォールバックあり)、3DoF トラッキング用に INERTIAL_LAST_KNOWN を追加し、TrackingState に TRACKING_DEGRADED を追加しました。(Ie661c、b/445466590)
  • 非推奨の SpatialLayoutSpacer を削除しました(I7b36c)
  • 非推奨のパディング API を削除しました(If1886)
  • バイアス値に floatRange を追加しました。LayoutDirection のデフォルト値を削除しました(I9d74e)

バグの修正

  • SpatialColumn、SpatialRow、SpatialCurvedRow のコードサンプルと KDoc ドキュメントを追加しました。(Iaf54f、b/495777633)

バージョン 1.0.0-alpha12

2026 年 3 月 25 日

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

API の変更

  • SpatialGltfModel API と SpatialGltfModelAnimation API を追加して、glTF をレンダリングし、アニメーションを制御します。SpatialGltfModelState を AutoCloseable に変更しました。リソースを解放するには、これを閉じる必要があります。(I11fde、b/466065486、b/481379924)。ただし、SpatialGltfModel API は、追加のテストが保留されているため、このリリースでは制限付きとしてマークされています。(Ibf003、b/466090694)
  • SubspaceModifier.rotate に非推奨の空のオーバーロードを追加しました。(Idceb6)
  • SpatialSmoothFeatheringEffect 関数の名前を spatialSmoothFeatheringEffect に変更し、draw モジュールに移動しました。SpatialExternalSurface のデフォルトのフェザリング値を null に更新しました。これは、以前の ZeroFeatheringEffect 機能を模倣したものです。(I5fdaa、b/460426800)
  • onPointSourceParamsAvailable を削除しました。別のオーディオ空間化 API が近日中に提供される予定です。(I86507、b/458513439)
  • オフセット部分空間修飾子の RTL 動作を追加しました。また、レイアウト方向を無視する absoluteOffset を追加しました。(I30e4b、b/474409165)

バージョン 1.0.0-alpha11

2026 年 2 月 25 日

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

新機能

  • SpatialExternalSurfaces に SuperSampling パラメータを追加しました(Icd4d1)。

既知の問題

  • SceneCore の SurfaceEntity に問題があると、SpatialExternalSurface のインスタンスを作成するときにアプリがクラッシュすることがあります。この問題は、androidx.xr.scenecore:scenecore-*:1.0.0-alpha13、androidx.xr.compose:compose:1.0.0-alpha12、およびそれ以降のリリースで解決されています。影響を受けるアプリは最新バージョンに更新する必要があります。

API の変更

  • レイアウト方向を認識するためのサブスペース修飾子のパディングを変更しました。(I53e25)
  • SpatialCapabilities はシールされているため、拡張できません。(I07aef)
  • 汎用 SpatialAlignment パラメータを受け取る SpatialRow API と SpatialColumn API は非推奨になりました。代わりに、SpatialRow と SpatialColumn にそれぞれ verticalAlignment または horizontalAlignment を受け取る API を使用してください。(Iec390)
  • オーバーロード SubspaceLayout 関数 API を統合(Idd30a)
  • SubspaceModifier.lookAtUser の名前を rotateToLookAtUser に、up パラメータの名前を upDirection に変更しました。(Icafb8)
  • SpatialRow をインライン関数にしました(Ia2f20)
  • SpatialColumn をインライン関数にしました(I681be)
  • ビルボード API を削除しました(Ib76cd)

バージョン 1.0.0-alpha10

2026 年 1 月 28 日

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

API の変更

  • 非推奨の API ApplicationSubspace を削除しました(Ia6596、b/468345186)
  • SpatialShape をシールされたインターフェースに更新しました(I7e3f5、b/460426800)
  • SpatialAlignment で非推奨の API を削除。(Ib0b61、b/468011887)
  • SpatialLayoutSpacer を非推奨にし、SpatialSpacer を導入しました。(I2ebf3、b/466071383)
  • UserSubspace API を更新し、「遅延ロック」という用語を「ソフトロック」に置き換えました。(I9ded1、b/464035984)

バージョン 1.0.0-alpha09

2025 年 12 月 3 日

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

API の変更

  • LookAtUser とビルボード修飾子を追加して、コンテンツが常にユーザーの方向を向くようにします。(I49b99)
  • InteractionPolicy を SpatialExternalSurfaces と SpatialPanels に設定する機能を追加し、クリックやその他の 3D 入力イベントを検出できるようにしました。(Iae155)
  • 幅、高さ、奥行きを Dp 値として指定する size 修飾子と requiredSize 修飾子のオーバーロードを追加しました。(I92f79)
  • ParentLayoutParamsModifier インターフェースが DelegatableSubspaceNode を拡張するようになりました。(I1a6d4)
  • ApplicationSubspace は非推奨となり、Subspace API が推奨されます。
    • Subspace API の動作が変更され、推奨されるポーズとスケールでアプリケーション全体のサブスペースのみが提供されるようになりました。
    • 2D コンテキストに埋め込みサブスペースを提供するために、PlanarEmbeddedSubspace API が導入されました。(Id3343)
  • SubspaceModifier.Node API に shouldAutoInvalidate フラグを追加しました。(I93902)
  • required(Size|Width|Depth|Height) を追加しました。デベロッパーは、親の受信測定制約を無視して、@SubspaceComposable のサイズを特定の範囲に制限できます。(Ifaa78)
  • SubspaceModifier.onSizeChanged を追加しました。これにより、@SubspaceComposable のサイズが変更されたときにデベロッパーが対応できるように、シンプルで焦点を絞ったコールバックが提供されます。(I994f9)
  • Volume API を削除しました。Volume API の代わりに SceneCoreEntity API を使用する必要があります。(I4162b)
  • SubspaceLayoutModifierNode.requestRelayout を invalidateMeasurement/invalidatePlacement に分割します。(I14805)
  • デベロッパーが Compose で glTF をレンダリングできるようにする SpatialGltfModel API を追加しました。(Icc91f)
  • glTF を簡単にレンダリングするための SpatialGltfModel コンポーザブル API を導入しました(Iade67)

バグの修正

  • SceneCoreEntity のレイアウトのバグを修正しました。これで、制約が適切に適用されるようになります。(I11bb8)
  • jxr-compose モジュールを Compile sdk = 34 に下げました(I2d5db)

バージョン 1.0.0-alpha08

2025 年 10 月 22 日

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

API の変更

  • ResizePolicy を変更して、onResizeStart、onResizeUpdate、onResizeEnd を受け入れるようにしました。(I7e21f)

バグの修正

  • Subspace を含むアクティビティを破棄する際のクラッシュを防止しました。(I595a1)

バージョン 1.0.0-alpha07

2025 年 9 月 24 日

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

API の変更

  • SpatialMainPanel の KDocs を改善しました。(I27b70、b/444467891)
  • SpatialRow や SpatialColumn などの 3D レイアウトで、主軸に沿って子を配置するための SpatialArrangement を導入しました。この新しい API は、2D Compose でおなじみの配置オプション(Start、End、Center、SpaceBetween、SpaceAround、SpaceEvenly など)を提供し、LTR と RTL の両方のレイアウト方向を完全にサポートしています。(I7db38、b/436289959)
  • SubspaceModifier.Node の基本インターフェースを追加し、拡張インターフェースの型安全性とユーザビリティを向上させました。
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode(内部)(Iede00、b/440599394、b/440599394)
  • 制限なし SpatialExternalSurface (I33315, b/439646773)
  • SubspaceModifier を Subspace コンポーザブルに導入し、制約パラメータを SubspaceModifier とサイズ関連の SubspaceModifiers に置き換えました。allowUnboundedSubspace が true の場合、Subspace には引き続き無制限の制約を設定できます。(Ib06e6、b/433331675)
  • DragPolicy() と ResizePolicy() が SpatialPanel API と SpatialExternalSurface API の一部になったため、移動可能でサイズ変更可能な SubspaceModifiers を非推奨にしました(I397bf、b/437924639)。
  • 空間レイアウトで LayoutDirection のサポートを追加しました。SpatialAlignment を使用するコンポーザブルが、LTR と RTL の両方のコンテキストで要素を正しく配置するようになりました。(I964bb、b/436300273)
  • Panel API に Resizable パラメータと Movable パラメータを追加して、これらの動作がサポートされているコンテナにのみ適用されるようにします。(Id491c)
  • sizeIn、widthIn、heightIn、depthIn、SubspaceModifiers を追加しました。これにより、幅、高さ、奥行きの最小制約と最大制約を正確に設定できます。(I1af09、b/433330761)

バージョン 1.0.0-alpha06

2025 年 8 月 13 日

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

バグの修正

  • ライフサイクル オーナーが破棄されたときに ComposeXrOwnerLocals を再作成します。(9123ce1)

バージョン 1.0.0-alpha05

2025 年 7 月 30 日

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

新機能

  • SubspaceComposable アノテーション クラスを公開にしました。(Ic2a34、b/399432430)
  • 180 度と 360 度の球体を表す 2 つの新しい SpatialExternalSurface コンポーザブル。(I40ef2、b/391705799)
  • SubspaceModifier.aspectRatio を追加しました(Ide5ab、b/399729509、b/414762147)
  • SceneCore と Compose for XR の相互運用性を改善するために、SceneCoreEntity API を追加しました。(I50bb3、b/423020989)
  • GravityAlignedsubspace API を提供して、スケーリングされていない GravityAligned 機能をサポートしました(I07359)

API の変更

  • SpatialDialog() は SpatialDialogProperties.dismissOnBack のプレス構成に従います。(Ib453b、b/416797132)
  • minimumPanelDimension を、メートル単位での表現に合わせて、新しいデフォルトのディメンション サイズ Dimensions(0.1f, 0.1f, 0.1f) に更新します。(Ib852a)
  • サブスペースとオービターは、ホームスペース内およびアプリがバックグラウンドにあるときに、内部状態を保持するようになりました。ホームスペース モードでは、Subspace はフルスペース モードへの切り替えに備えてシーンをセットアップします。(I40317、b/416037751)
  • SpatialDialogs は、アプリがバックグラウンドにあるときに状態を保持するようになりました。(I6aa56)
  • ApplicationSubspace が、推奨されるスケールと位置をシステムから継承するようになりました。(I4565f、b/418834194)
  • SubspaceComposable が SubspaceComposable 以外のコンテキストで使用された場合に、エラー メッセージを改善し、エラーを早期にトリガーするようにしました。(Iee2ae、b/416484684)
  • コンポーザブル API の誤用時に警告が見落とされることが多いため、ExperimentalSubspaceVolumeApi を警告からエラーに更新しました。(I427aa、b/424864286)
  • サブスペースと ApplicationSubspace が recommendedContentBoxInFullSpace によって制限されるようになりました。以前は、SpatialUser の画角によって制限されていました。(I41015、b/423074142)
  • ハードコードされたサイズを使用しないように、最小サイズを使用するように SpatialElevation を更新しました(I2dbe6、b/427785338)。
  • キー変数が変更されたときに更新されるように、SpatialAcitivityPanel のスクリム方法を更新します。(I0f64d、b/427999029)
  • VolumeConstraints.Unbounded を削除し、デフォルトの制約値を同等の値に設定します。(Ie24ec、b/407938414)
  • SpatialFeatheringSize はもはや公開されていません (I1c15b、b/399432430)
  • XR の Placeable の名前を SubspacePlaceable に変更し、Compose の Placeable と区別できるようにしました。(I74874)
  • Orbiter の設定を削除し、新しいパラメータとして shouldRenderInNonSpatial を追加します。また、Orbiter() 関数を統合するために、クラス EdgeOffset を削除し、新しいパラメータとして orbiterOffsetType を追加しました。OrbiterEdge の名前を ContentEdge に変更しました。(Iebf3d)
  • Compose の Measurable タイプと区別するため、Measurable の名前を SubspaceMeasurable に変更しました。(I9726c)
  • MeasureResult の名前を SubspaceMeasureResult に変更しました(I9f34d)
  • setSubspaceContent API を削除し、Subspace コンポーザブルで Compose の setContent を使用するようにしました。(Ifff4c、b/421427391、b/421427391)
  • MeasurePolicy の名前が SubspaceMeasurePolicy に変更されました。(I37a9b、b/422553904)
  • デフォルトがないとメンバーを追加できないため、SubspaceSemanticsInfo をシール済みインターフェースに変更します。(I372f9、b/423704068)
  • SpatialExternalSurface のドキュメントを更新し、ContentSecurityLevel の名前を SurfaceProtection に変更しました(I3c460、b/420982808)
  • アンカーを可能にする、移動可能な修飾子のオーバーロードされたコンストラクタを提供しました。(Ic0c70)
  • ツールチップの位置プロバイダを追加しました。これにより、デベロッパーはツールチップをアンカーの上、下、左、右のいずれに配置するかを制御できるようになりました。キャレットの Shape を受け取る API を追加し、より多くのカスタム シェイプを提供できるようにしました。(Ie513c、b/374766087、b/418854637)
  • PublishedApi としての CoreEntity を削除しました(Ifee05)

バグの修正

  • レンダリング時に SpatialDialog が点滅する問題を修正しました。(Ife73c、b/401619909)
  • SpatialDialog がアクティビティ パネルをスクリムできない問題を修正しました。(I8ca6c、 b/367442109)
  • XR ダイアログに一部のコンテンツが表示されない問題を修正しました(I17cd5、b/418062437)
  • コンテンツ内をクリックすると SpatialPopup が閉じられる問題を修正しました。(If262c、b/417245722)
  • resizable().movable() をチェーンすると、SpatialPanel が新しいサイズに正しくサイズ変更されない問題を修正しました。(I02ee3、b/422264230)
  • SpatialComposeVideoPlayer で topBar がメニューと重複する問題を修正しました(Id33bc、b/427168167)
  • 角の丸みがレンダリングされない問題を修正しました(I975fe、b/428261830)

バージョン 1.0.0-alpha04

2025 年 5 月 7 日

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

新機能

  • カスタム SubspaceModifier タイプがコンポジションのローカル値にアクセスできるように、CompositionLocalConsumerSubspaceModifierNode インターフェースを追加しました。
  • Compose の AndroidView 実装スタイルに沿った新しい SpatialPanel API を追加し、以前の ViewBased SpatialPanel を非推奨にしました。
  • 無制限の制約を表す VolumeConstraints.Unbounded コンパニオン オブジェクトを追加しました。
  • 空間オーディオ ソースを許可する SubspaceModifier.onPointSourceParams を追加しました。
  • 公開 ApplicationSubspace が追加され、アプリが空間コンテンツをレンダリングできる 3D 領域を定義するオプションの VolumeConstraints が提供されました。デフォルトでは、制約が指定されていない場合、Subspace は SpatialUser の現在の画角の幅と高さに制限されます。画角を特定できない場合、ユーザーは制約を指定できます。それ以外の場合は、デフォルトの画角の幅と高さの値が使用されます。
  • SpatialExternalSurface を追加しました。これは、ステレオスコープ コンテンツのレンダリングに使用できます。SpatialExternalSurface は、修飾子(アルファを除く)とエッジのフェザリング効果でカスタマイズできます。
  • 新しい pointerHoverIcon サブスペース修飾子を追加しました。これにより、ユーザーは空間ポインタのアイコンを設定できます。

API の変更

  • すべての Jetpack XR パッケージから RequiresApi(34) 制限を削除しました。Jetpack XR は現在、API レベル 34 以降のデバイスでのみ利用できるため、この制限は不要でした。(Iae0f8)
  • Kotlin 2.0 でリリースされたプロジェクトを使用するには、KGP 2.0.0 以降が必要です。(Idb6b5)
  • 埋め込みアクティビティのない空間パネルで、戻る処理が機能するようになりました。戻る処理を機能させるには、Android マニフェストで android:enableOnBackInvokedCallback="true" を指定する必要があります。
  • 空間ダイアログでバックハンドリングが機能するようになりました。戻るボタンの処理を機能させるには、Android マニフェストで android:enableOnBackInvokedCallback="true" を指定する必要があります。
  • Compose ベースと View ベースの SpatialPanel が、コンテンツに基づいてサイズを調整できるようになりました。
  • デベロッパーは、事前定義されたレベルに制限されることなく、独自のカスタム SpatialElevationLevel 値を設定できるようになりました。
  • elevation パラメータを使用して、オービターの高度レベルをカスタマイズできるようになりました。
  • デフォルトで、サブスペースの幅と高さが SpatialUser の画角に制限されるようになりました。画角を特定できない場合は、デフォルトの画角の幅と高さの値が使用されます。
  • Movable 修飾子に新しいコールバック onMoveStart と onMoveEnd を追加しました。onMoveStart コールバックと onMoveEnd コールバックは、ユーザーが movable 修飾子を使用してサブスペース コンポーザブルの移動を開始および終了したときに呼び出されます。
  • SpatialRow や SpatialPanel などの空間 API から name パラメータが削除されました。空間コンポーズ ツリーをデバッグする場合は、代わりに SubspaceModifier.testTag を使用します。
  • spatialElevationLevel と content のみを持つ SpatialPopup のサポートされていないオーバーロードを削除しました。onDimissRequest をサポートするインターフェースを使用してください。
  • Movable 修飾子から onPoseChange コールバックが削除されました。代わりに onMove を使用してください
  • SubspaceModifiers が取り外されているか、現在取り外し中の場合、その効果は適用されなくなります。
  • 既存の SpatialRow API が SpatialRow と SpatialCurvedRow に分割されました。以前に SpatialRow の curveRadius パラメータを使用していた場合は、代わりに SpatialCurvedRow を使用してください。同じ動作になります。
  • MainPanel と ActivityPanel を同様の最新のシステム イメージで実行した場合、タイトルバーが表示されなくなりました。
  • アルファ修飾子とスケール修飾子がスタック可能になり、最終的に適用されるアルファ値またはスケール値に値が乗算されるようになりました。
  • Movable 修飾子からの onPoseChange コールバックが最適化され、ポーズの移動がよりスムーズになりました。
  • movable 修飾子と resizable 修飾子は、メインスレッドでコールバックを実行するようになり、状態の変更によって再コンポーズがトリガーされるようになりました。
  • レイアウト フェーズと測定フェーズに状態監視を追加し、SubspaceLayout の状態変化によって再レイアウトがトリガーされるようにしました。
  • 既存の修飾子をより適切に再利用できるように、修飾子チェーンの更新を最適化しました。

バグの修正

  • SpatialDialog が表示されたときにスクリムを停止しました。(Ic4594)
  • 修飾子ノードがデタッチされている間に行われた再レイアウト リクエストが無視されるようになりました。
  • Movable 修飾子と Resizable 修飾子によってトリガーされる再レイアウト フェーズを削除しました。
  • MainPanel() コンポーザブルで、直接またはレイアウト計算(SpatialRow/SpatialColumn 計算など)中にいずれかのディメンションがゼロに設定された場合に発生するクラッシュを修正しました。代わりにパネルが非表示になります。なお、この修正は、レイアウト フェーズ中のクラッシュに特化したものです。ユーザー操作によるパネルのサイズをゼロにするサイズ変更は、別途処理されます。非表示のパネルには UI アフォーダンスがありません。
  • サイズ変更可能な修飾子の maintainAspectRatio に関する問題を修正しました。アスペクト比が維持されるようになります。
  • ネストされた Subspace が 1 つのフレームに対して誤って配置される問題を修正しました。
  • 角丸が適用されるべきときに適用されないことがある問題を修正しました。
  • NestedSubspaces が 1 フレームだけ間違った場所に表示されることがなくなりました。

バージョン 1.0.0-alpha03

2025 年 2 月 26 日

androidx.xr.compose:compose:1.0.0-alpha03 と androidx.xr.compose:compose-testing:1.0.0-alpha03 がリリースされました。前回のアルファ版からの大きな変更はありません。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。

バージョン 1.0.0-alpha02

2025 年 2 月 12 日

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

新機能

  • 空間ダイアログが有効になっているときに、アクティビティ パネルのコンテンツをスクリムできるようになりました。
  • Orbiter API が SubspaceComposable コンテキストで使用できるようになり、Orbiter が最も近い SubspaceLayout ベースのコンポーザブル親にアタッチされるようになりました。
  • LayoutCoordinatesAwareModifierNode を導入し、カスタムのポジショニング ベースの修飾子を使用できるようにしました。
  • SubspaceModifier.Node に attach/detach ライフサイクル メソッドを追加しました。
  • movable 修飾子に scaleWithDistance を追加しました。scaleWithDistance が有効になっている場合、移動されたサブスペース要素は拡大または縮小されます。また、移動前に設定されていた明示的なスケールも維持されます。

API の変更

  • SessionCallbackProvider を削除し、SpatialCapabilities に置き換えました。

その他の変更

  • minSDK を 24 に減らしました。すべての Jetpack XR API は、引き続き実行時に API 34 を必要とします。
  • Orbiter EdgeOffset.inner、EdgeOffset.outer、EdgeOffset.overlap のコンストラクタが @Composable メソッドではなくなり、コンポーズ可能でないコンテキストで使用できるようになりました。
  • 最新の UX 仕様に合わせて空間標高レベルを更新します。
  • MeasurableLayout に SubspaceSemanticsInfo インターフェースを実装します。
  • SubspaceModifierElement の名前を SubspaceModifierNodeElement に変更しました。

バグの修正

  • SubspaceModifier の順序を安定させるための修正。SubspaceModifier の動作の信頼性が向上します。オフセット、回転、スケーリング、移動可能、サイズ変更可能の修飾子を任意の順序で使用できるようになりました。

バージョン 1.0.0-alpha01

2024 年 12 月 12 日

androidx.xr.compose:compose-*1.0.0-alpha01 がリリースされました。

初回リリースの機能

  • Jetpack Compose for XR の最初のデベロッパー リリース。行や列などの使い慣れた Compose のコンセプトを使用して、XR で空間 UI レイアウトを作成します。既存の 2D アプリを XR に移植する場合でも、新しい XR アプリをゼロから作成する場合でも、この方法を使用できます。このライブラリは、空間パネルやオービターなどのサブスペースと空間コンポーザブルを提供します。これにより、既存の 2D Compose または Views ベースの UI を空間レイアウトに配置できます。このリリースでは、Volume サブスペース コンポーザブルが導入されています。これにより、3D モデルなどの SceneCore エンティティを UI を基準として配置できます。詳しくは、こちらのデベロッパー ガイドをご覧ください。

    • Subspace: このコンポーザブルは、アプリの UI 階層内のどこにでも配置できます。これにより、ファイル間のコンテキストを失うことなく、2D UI と空間 UI のレイアウトを維持できます。これにより、UI ツリー全体で状態をホイスティングしたり、アプリを再設計したりすることなく、XR と他のフォーム ファクタ間で既存のアプリ アーキテクチャなどを簡単に共有できます。

    • SpatialPanel: 空間パネルは、アプリのコンテンツを表示できるサブスペース コンポーザブルです。たとえば、動画再生、静止画像、その他のコンテンツを空間パネルに表示できます。

    • オービター: オービターは空間 UI コンポーネントです。対応する空間パネルにアタッチされるように設計されており、その空間パネルに関連するナビゲーションとコンテキスト アクション アイテムが含まれています。たとえば、動画コンテンツを表示する空間パネルを作成した場合、オービター内に動画再生コントロールを追加できます。

    • ボリューム: 3D モデルなどの SceneCore エンティティを UI を基準に配置します。

  • 空間レイアウト: 複数の空間パネルを作成し、SpatialRow、SpatialColumn、SpatialBox、SpatialLayoutSpacer を使用して空間レイアウト内に配置できます。 SubspaceModifier を使用してレイアウトをカスタマイズします。

  • 空間 UI コンポーネント: これらの要素は 2D UI で再利用できます。空間属性は、空間機能が有効になっている場合にのみ表示されます。

    • SpatialDialog: パネルが Z 深度で少し押し戻され、高くなったダイアログが表示されます。
    • SpatialPopUp: パネルが Z 深度で少し押し戻され、ポップアップが前面に表示されます。
    • SpatialElevation: SpatialElevationLevel を設定して、エレベーションを追加できます。
  • SpatialCapabilities: 空間機能は、ユーザーがアプリやシステムを操作する際に変更されることがあります。また、アプリ自体によって変更されることもあります(ホームスペースやフルスペースへの移動など)。問題を回避するには、アプリで LocalSpatialCapabilities.current をチェックして、現在の環境でサポートされている API を確認する必要があります。isSpatialUiEnabled: 空間 UI 要素(SpatialPanel など) isContent3dEnabled: 3D オブジェクト isAppEnvironmentEnabled: 環境 isPassthroughControlEnabled: アプリがパススルー状態を制御できるかどうか isSpatialAudioEnabled: 空間オーディオ

既知の問題

  • 現在、Jetpack Compose for XR を使用するには、minSDK が 30 である必要があります。回避策として、次のマニフェスト エントリ <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> を追加すると、minSDK 23 でビルドして実行できるようになります。
  • 現在、Jetpack XR アプリでは、AndroidManifest で android.permission.SCENE_UNDERSTANDING 権限をリクエストする必要があります。
  • マニフェストの PROPERTY_XR_ACTIVITY_START_MODE プロパティを使用してアプリがフルスペースで直接起動する場合、アクティビティ/アプリケーションは最初にホームスペースで開いてからフルスペースに移行します。
  • Volume コンポーザブルの glTF が、最初は間違った場所でちらつくことがあります。
  • 大幅に移動されたパネルで SpatialDialog を使用すると、コンテンツが間違った方向にプッシュされます。