XR용 Jetpack Compose

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을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 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에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 라이브러리가 Kotlin 2.2를 타겟팅하며 kotlinc 2.2가 필요합니다. (I82396, b/498369605)
  • FollowMode.soft()의 halfLifeMs 매개변수 이름을 halfLifeMillis로 변경했습니다. (I39187)
  • PitchLimits를 @JvmInline value class로 변환하여 두 개의 부동 소수점을 Long에 패킹하여 객체 할당을 제거했습니다. (Id43c3)
  • FollowMode.soft에 새 매개변수(halfLifeMs, startDelay, startThresholds 매개변수)를 추가했습니다. smoothStep 알고리즘에서 exponentialDecay 알고리즘으로 전환함에 따라 더 이상 필요하지 않은 durationMs 매개변수를 삭제했습니다. (If0140)
  • 지원 중단된 SpatialActivityPanel 오버로드를 삭제합니다. 대신 SpatialActivityPanelController를 허용하는 SpatialActivityPanel의 오버로드를 사용합니다. (I5abc3)
  • FullSpaceMode의 단일 Activity 내에서 3D 및 2D Composable 콘텐츠 간 전환을 사용 설정합니다. 이 변경사항은 SpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled으로 관리됩니다. (I4e237)
  • 콘텐츠 팔로우를 지원하기 위해 FollowTarget 매개변수를 사용하는 실험용 Subspace 오버로드를 노출했습니다. (Iec1a9)
  • 지원 중단된 이동 가능한 수정자를 삭제합니다. 대신 새 MovePolicy를 매개변수로 허용하는 새로운 이동 가능한 수정자를 사용하세요. (Ib135d)
  • 지원 중단된 DragPolicy를 삭제합니다. 대신 SubspaceModifier.movable()를 사용합니다. (I108d4)
  • 스테이트풀(Stateful) 버전을 위해 스테이트리스(Stateless) Slider 및 RangeSlider 오버로드를 지원 중단했습니다. RangeSliderState의 activeRangeStart 및 activeRangeEnd의 이름을 startValue 및 endValue로 변경하여 DeprecationLevel.HIDDEN를 사용하는 이전의 승격되지 않은 실험용 Slider API를 지원 중단했습니다. (If8995)

버그 수정

  • 앵커 또는 사용자에 연결된 하위 공간 유형을 포함한 모든 하위 공간 유형에 대해 올바른 포즈 계산을 보장하기 위해 poseInActivitySpace를 도입하여 RotateToLookAtUser를 수정했습니다.Ica367b
  • Orbiter가 대형 패널에 연결될 때 발생하는 제약 조건 비정상 종료 문제를 수정했습니다. (I8c4bf)
  • removeAll()로 인해 불필요한 ArrayList 할당이 발생하는 SubspaceLayoutNode의 버그를 수정했습니다. 또한 깊이 계산 성능을 수정했습니다. I34a10a
  • androidx.lifecycle:lifecycle-runtime 종속 항목이 2.10.0으로 업데이트되었습니다. 이 버전은 번들 수명 주기 런타임 린트 검사를 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에 포함된 커밋을 확인하세요.

API 변경사항

  • 더 이상 사용되지 않는 DragPolicy을 제거했습니다. 대신 SubspaceModifier.movable()를 사용합니다. (I108d4)
  • 지원 중단된 ResizePolicy 및 SpatialPanel, SpatialExternalSurface에서의 사용을 삭제했습니다. 지원 중단된 SubspaceModifier.resizable 함수를 삭제합니다. 대신 새 ResizePolicy와 함께 새 SubspaceModifier.resizable를 사용하세요. (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)
  • FOV가 작은 기기에서 잘림을 방지하기 위해 RotateToLookAtUserActivity의 패널 크기를 줄였습니다. (I8d672)

알려진 문제

  • Compose XR 패널에서 단일 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에는 이러한 커밋이 포함되어 있습니다.

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)
  • allowUnboundedSubspace가 있는 지원 중단된 Subspace 오버로드가 삭제되었습니다. (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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • ComponentOverride API를 삭제합니다. (I820c4)
  • GltfAnimation 및 SpatialGltfModelAnimation API가 실험용으로 표시되었습니다. 일부 속성이 getter로 변환되었습니다. (I8d689, b/524771027)
  • 미터와 픽셀 간의 변환을 상수로 설정하여 전체 밀도 동작을 수정했습니다. Meter.kt가 지원 중단되었습니다. 이제 Session.scene.virtualPixelDensity를 대안으로 사용할 수 있습니다. (I122ff, b/430097855, b/474168798)
  • 두 개의 수정자 대신 ResizePolicy를 사용하도록 크기 조절 가능한 수정자를 업데이트합니다. (I7fb0f, b/496257436, b/519672992)
  • SubspaceAssertions.kt의 모든 공개 부동 소수점 측정기준 및 위치 동등성 어설션에 허용 오차: Dp = Dp(0.5f) 매개변수가 추가되었습니다. 기본 허용 동작 (0.5.dp)이 완전히 문서화되었습니다. (I266cb, b/521491915)
  • movePolicy 매개변수가 있는 이동 가능한 오버로드를 추가하고 transformingMovable 및 movable를 지원 중단했습니다. (Ic88c1, b/481781189)
  • Material Expressive 사양을 따르는 표준 목록 항목과 세분화된 목록 항목의 새로운 비대화형 변형이 추가되었습니다. 표현력이 없는 버전은 지원 중단되었습니다. (Ide4de, b/491994186)
  • 하위 공간의 경우 allowUnboundedSubspace 매개변수가 지원 중단되고 숨겨집니다. 이제 Subspace 수정자에서 SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity)를 사용하여 제한되지 않은 동작을 실행해야 합니다. FollowingSubspace에서 allowUnboundedSubspace 매개변수가 삭제되었습니다. (Ia72ae, b/433624021)
  • Session.create를 정지 함수로 변환했습니다. (I5d27f)
  • ExoPlayer 또는 SoundEffectPlayer를 통해 오디오 재생을 서라운드 오디오로 변환할 수 있는 SubspaceModifier.spatializedAudioOutput를 추가했습니다. (I46697, b/489421980, b/497867019)
  • 상태 확인을 위해 SpaceRequestResult를 반환하도록 ComponentActivity.requestHomeSpace() 및 requestFullSpace()를 업데이트했습니다. (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에서 지원 중단된 스페이스 모드 API를 삭제했습니다. (I1ef5c, b/458712461)
  • SubspaceSemanticsConfiguration를 도입했습니다. 공간 노드의 시맨틱 속성 구성입니다. 이 클래스는 기본 2D 시맨틱 기능을 외부 소비자에게 유출하지 않고 3D 시맨틱의 쿼리 메서드를 안전하게 노출합니다. (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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • ResizePolicy 및 이전의 크기 조절 가능한 수정자가 지원 중단되고 새로운 SubspaceModifier.resizable 오버로드 및 SubspaceModifier.transformingResizable로 대체되었습니다. (I9e4bc)
  • SpatialGltfModel API 업데이트: SpatialGltfModelSource를 통해 리소스에서 모델을 로드하는 기능이 추가되었습니다.fromResource. SpatialGltfModelAnimation에서 속도 이름을 playbackSpeed로 변경하고 resume() 메서드를 추가했습니다. SpatialGltfModelStatus.Loaded 및 Loading이 이제 객체입니다. (I523de)
  • rotateToLookAtUser를 실험용 API로 표시했습니다. (I86c16)
  • 보호된 변수 targetCurrentPose를 로컬 변수 currentTargetPoseMeter로 이동하고 이름을 바꿨습니다. (Ia557c)
  • 레이아웃 크기 내에서 객체가 렌더링되는 위치를 포함하도록 SpatialPanel 및 SpatialExternalSurface kdocs를 업데이트합니다. (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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • 기본 시스템 처리 3D 움직임을 위한 transformingMovable를 도입하고 맞춤 움직임 동작을 처리하기 위해 movable의 새로운 오버로드를 도입했습니다. (I50960)
  • SpatialGltfModel.fromData()가 삭제되었습니다. (I4d083)
  • 측정 패스 후 onRemeasured 콜백을 제공하는 새로운 수정자 노드 인터페이스 SubspaceMeasuredSizeAwareModifierNode를 추가했습니다. 이제 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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • Orbiter API는 추가 변경사항이 대기 중입니다. Orbiter의 지원 중단 알림을 표시하지 않고 향후 출시에서 Orbiter 변경사항을 주시하는 것이 좋습니다.
  • SceneCoreEntity를 사용하여 glTF를 렌더링하는 경우 glTF가 렌더링되도록 session.scene.activitySpace를 GltfModel.create 호출의 parent 매개변수에 전달해야 합니다.
  • 개발자가 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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • SpatialGltfModel API와 SpatialGltfModelAnimation API를 추가하여 glTF를 렌더링하고 애니메이션을 제어합니다. SpatialGltfModelState를 AutoCloseable로 변경했습니다. 이제 리소스를 확보하려면 닫아야 합니다. (I11fde, b/466065486, b/481379924) 하지만 SpatialGltfModel API는 추가 테스트가 보류 중인 이 출시 버전에서 제한된 것으로 표시됩니다. (Ibf003, b/466090694)
  • SubspaceModifier.rotate에 대해 지원 중단된 빈 오버로드를 추가했습니다. (Idceb6)
  • SpatialSmoothFeatheringEffect 함수의 이름을 spatialSmoothFeatheringEffect로 바꾸고 그리기 모듈로 이동했습니다. 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에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 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 및 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에는 이러한 커밋이 포함되어 있습니다.

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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • 콘텐츠가 항상 사용자를 향하도록 하는 LookAtUser 및 빌보드 수정자가 추가되었습니다. (I49b99)
  • InteractionPolicy를 SpatialExternalSurfaces 및 SpatialPanels로 설정하는 기능이 추가되어 클릭 및 기타 3D 입력 이벤트를 감지할 수 있습니다. (Iae155)
  • 너비, 높이, 깊이를 Dp 값으로 사용하는 크기 및 requiredSize 수정자 오버로드가 추가되었습니다. (I92f79)
  • 이제 ParentLayoutParamsModifier 인터페이스가 DelegatableSubspaceNode를 확장합니다. (I1a6d4)
  • ApplicationSubspace는 Subspace API로 대체되어 지원 중단되었습니다.
    • Subspace API 동작이 권장 포즈 및 배율에서 애플리케이션 전체 하위 공간만 제공하도록 변경되었습니다.
    • PlanarEmbeddedSubspace API가 도입되어 2D 컨텍스트에서 삽입된 하위 공간을 제공합니다. (Id3343)
  • SubspaceModifier.Node API에 shouldAutoInvalidate 플래그를 추가했습니다. (I93902)
  • 개발자가 상위 요소의 수신 측정 제약 조건을 무시하고 @SubspaceComposable의 크기를 특정 범위로 제한할 수 있는 required(Size|Width|Depth|Height) API를 추가했습니다. (Ifaa78)
  • @SubspaceComposable의 크기가 변경될 때 개발자가 반응할 수 있도록 간단하고 집중적인 콜백을 제공하는 SubspaceModifier.onSizeChanged를 추가했습니다. (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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • onResizeStart, onResizeUpdate, onResizeEnd를 허용하도록 ResizePolicy를 변경했습니다. (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에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • SpatialMainPanel의 KDoc가 개선되었습니다. (I27b70, b/444467891)
  • SpatialRow 및 SpatialColumn와 같은 3D 레이아웃에서 기본 축을 따라 하위 요소를 정렬하는 SpatialArrangement를 도입했습니다. 이 새로운 API는 Start, End, Center, SpaceBetween, SpaceAround, SpaceEvenly를 비롯한 2D Compose의 익숙한 정렬 옵션을 제공하며 LTR 및 RTL 레이아웃 방향을 모두 완벽하게 지원합니다. (I7db38, b/436289959)
  • SubspaceModifier.Node의 기본 인터페이스를 추가하여 확장 프로그램 인터페이스의 유형 안전성과 사용성을 개선했습니다. 예를 들면 다음과 같습니다.
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • (Iede00, b/440599394, b/440599394)CoreEntityNode(내부)
  • (I33315, b/439646773)에서 SpatialExternalSurface 제한을 해제합니다.
  • SubspaceModifier를 Subspace 컴포저블에 도입하고 제약 조건 매개변수를 크기 관련 SubspaceModifiers가 있는 SubspaceModifier로 바꿉니다. allowUnboundedSubspace이 true이면 하위 공간에 여전히 제한 없는 제약조건이 있을 수 있습니다. (Ib06e6, b/433331675)
  • DragPolicy() 및 ResizePolicy()가 SpatialPanel 및 SpatialExternalSurface API의 일부가 되었으므로 이동 및 크기 조절이 가능한 SubspaceModifiers를 지원 중단합니다. (I397bf, b/437924639)
  • 공간 레이아웃에 LayoutDirection 지원이 추가되었습니다. SpatialAlignment를 사용하는 컴포저블은 이제 LTR 및 RTL 컨텍스트 모두에서 요소를 올바르게 배치합니다. (I964bb, b/436300273)
  • 크기 조절 가능 및 이동 가능 매개변수를 Panel API에 추가하여 이러한 동작이 지원되는 컨테이너에만 적용될 수 있도록 합니다. (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에는 이러한 커밋이 포함되어 있습니다.

버그 수정

  • 수명 주기 소유자가 소멸되면 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에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • SubspaceComposable 주석 클래스가 공개되었습니다. (Ic2a34, b/399432430)
  • 180도 및 360도 구를 나타내는 새로운 SpatialExternalSurface 컴포저블 2개가 추가되었습니다. (I40ef2, b/391705799)
  • SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147) 추가됨
  • SceneCore과 Compose for XR 간의 상호 운용성을 개선하기 위해 SceneCoreEntity API를 추가했습니다. (I50bb3, b/423020989)
  • 크기 조정되지 않은 GravityAligned 기능을 지원하는 GravityAlignedsubspace API를 제공했습니다. (I07359)

API 변경사항

  • SpatialDialog()은 SpatialDialogProperties.dismissOnBack 누르기 구성을 따릅니다. (Ib453b, b/416797132)
  • minimumPanelDimension를 미터 단위로 표시하므로 새로운 기본 측정기준 크기인 Dimensions(0.1f, 0.1f, 0.1f)로 업데이트합니다. (Ib852a)
  • 이제 하위 공간과 Orbiter가 홈 공간에서, 그리고 앱이 백그라운드에 있을 때 내부 상태를 유지합니다. 홈 공간 모드에서 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)
  • Compose의 Placeable와 구분하기 위해 XR Placeable의 이름을 SubspacePlaceable로 바꿨습니다. (I74874)
  • Orbiter 설정을 삭제하고 shouldRenderInNonSpatial을(를) 새 매개변수로 추가합니다. 또한 EdgeOffset 클래스를 삭제하고 orbiterOffsetType를 새 매개변수로 추가하여 Orbiter() 함수를 통합합니다. OrbiterEdge의 이름도 ContentEdge로 변경합니다. (Iebf3d)
  • Compose의 Measurable 유형과 구분하기 위해 Measurable의 이름을 SubspaceMeasurable로 변경했습니다. (I9726c)
  • MeasureResult의 이름을 SubspaceMeasureResult로 바꿨습니다. (I9f34d)
  • Subspace 컴포저블과 함께 Compose의 setContent를 사용하기 위해 setSubspaceContent API를 삭제했습니다. (Ifff4c, b/421427391, b/421427391)
  • MeasurePolicy에서 SubspaceMeasurePolicy로 이름이 변경되었습니다. (I37a9b, b/422553904)
  • 기본값이 없으면 멤버를 추가할 수 없으므로 SubspaceSemanticsInfo를 봉인된 인터페이스로 전환합니다. (I372f9, b/423704068)
  • SpatialExternalSurface 문서를 업데이트하고 ContentSecurityLevel의 이름을 SurfaceProtection로 변경했습니다. (I3c460, b/420982808)
  • 앵커링을 허용하는 이동 가능한 수정자에 오버로드된 생성자를 제공했습니다. (Ic0c70)
  • 도움말에 더 많은 위치 제공자를 추가하여 이제 개발자가 도움말을 앵커의 위, 아래, 왼쪽 또는 오른쪽에 배치할지 제어할 수 있습니다. 더 많은 맞춤 도형을 제공할 수 있도록 캐럿의 도형을 사용하는 API를 추가합니다. (Ie513c, b/374766087, b/418854637)
  • CoreEntity를 PublishedApi로 삭제했습니다. (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에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 맞춤 SubspaceModifier 유형이 컴포지션 로컬 값에 액세스할 수 있도록 CompositionLocalConsumerSubspaceModifierNode 인터페이스를 추가했습니다.
  • Compose AndroidView 구현 스타일을 따르고 이전 ViewBased SpatialPanel를 지원 중단하는 새로운 SpatialPanel API를 추가했습니다.
  • 제한되지 않은 제약 조건을 나타내는 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 기반 및 뷰 기반 SpatialPanel가 콘텐츠에 따라 크기를 조절할 수 있습니다.
  • 이제 개발자는 사전 정의된 수준에 국한되지 않고 자체 맞춤 SpatialElevationLevel 값을 설정할 수 있습니다.
  • 이제 elevation 매개변수를 통해 궤도선 고도 수준을 맞춤설정할 수 있습니다.
  • 이제 하위 공간은 기본적으로 너비와 높이에서 SpatialUser의 시야로 제한될 수 있습니다. 시야를 확인할 수 없는 경우 기본 시야 너비 및 높이 값이 사용됩니다.
  • 새 콜백 onMoveStart 및 onMoveEnd를 Movable 수정자에 추가했습니다. onMoveStart 및 onMoveEnd 콜백은 사용자가 이동 가능한 수정자를 사용하여 하위 공간 컴포저블을 이동하기 시작하고 종료할 때 호출됩니다.
  • name 매개변수가 SpatialRow 및 SpatialPanel와 같은 공간 API에서 삭제되었습니다. 공간 Compose 트리를 디버깅하려면 대신 SubspaceModifier.testTag를 사용하세요.
  • spatialElevationLevel 및 content만 있는 지원되지 않는 SpatialPopup 오버로드가 삭제되었습니다. onDimissRequest를 지원하는 인터페이스를 사용하세요.
  • Movable 수정자의 onPoseChange 콜백이 삭제되었습니다. 대신 onMove를 사용합니다.
  • SubspaceModifiers이(가) 분리되었거나 현재 분리 중인 경우 더 이상 효과가 적용되지 않습니다.
  • 기존 SpatialRow API가 SpatialRow 및 SpatialCurvedRow로 분할되었습니다. 이전에 SpatialRow의 curveRadius 매개변수를 사용한 경우 이제 동일한 동작을 제공하는 SpatialCurvedRow를 대신 사용하세요.
  • MainPanel 및 ActivityPanel는 유사한 최신 시스템 이미지에서 실행될 때 더 이상 제목 표시줄이 없습니다.
  • 이제 알파 및 배율 수정자를 누적할 수 있으며 최종 적용된 알파 또는 배율 값에 대해 값을 곱합니다.
  • Movable 수정자의 onPoseChange 콜백이 더 부드러운 포즈 움직임을 실행하도록 최적화되었습니다.
  • 이제 이동 및 크기 조절이 가능한 수정자가 기본 스레드에서 콜백을 실행하여 상태 변경으로 인해 리컴포지션이 트리거되도록 합니다.
  • SubspaceLayout의 상태 변경으로 인해 레이아웃이 다시 트리거되도록 레이아웃 및 측정 단계에 상태 관찰을 추가했습니다.
  • 기존 수정자를 더 잘 재사용할 수 있도록 수정자 체인 업데이트를 최적화했습니다.

버그 수정

  • SpatialDialog가 표시될 때 스크림이 중지되었습니다. (Ic4594)
  • 수정자 노드가 분리된 동안 이루어진 레이아웃 재설정 요청은 이제 무시됩니다.
  • Movable 및 Resizable 수정자로 트리거된 레이아웃 재구성 단계를 삭제했습니다.
  • MainPanel() 컴포저블에서 직접 또는 레이아웃 계산 중에(예: SpatialRow/SpatialColumn 계산) 측정기준이 0으로 설정될 때 발생하는 비정상 종료 문제를 해결했습니다. 이제 패널이 숨겨집니다. 이 수정사항은 특히 레이아웃 단계 중 발생하는 비정상 종료를 해결합니다. 사용자 상호작용을 통해 패널 크기를 0으로 조절하는 것은 별도로 처리됩니다. 숨겨진 패널에는 UI 어포던스가 없습니다.
  • 크기 조절 가능한 수정자의 maintainAspectRatio 관련 문제가 해결되었습니다. 이제 가로세로 비율이 유지됩니다.
  • 중첩된 하위 공간이 단일 프레임에 잘못 배치되는 문제가 해결되었습니다.
  • 둥근 모서리가 적용되어야 할 때 적용되지 않는 문제가 해결되었습니다.
  • NestedSubspaces가 잘못된 위치의 한 프레임에 더 이상 표시되지 않습니다.

버전 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에는 이러한 커밋이 포함되어 있습니다.

버전 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에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 이제 공간 대화상자가 활성화되면 활동 패널에서 콘텐츠를 스크림할 수 있습니다.
  • 이제 Orbiter API를 SubspaceComposable 컨텍스트에서 사용할 수 있으며 Orbiter를 가장 가까운 SubspaceLayout 기반 컴포저블 상위 요소에 연결합니다.
  • 맞춤 위치 기반 수정자를 허용하는 LayoutCoordinatesAwareModifierNode를 도입했습니다.
  • SubspaceModifier.Node에 연결/분리 수명 주기 메서드가 추가되었습니다.
  • 이동 가능한 수정자에 scaleWithDistance를 추가했습니다. scaleWithDistance가 사용 설정되면 이동된 하위 공간 요소가 확장되거나 축소됩니다. 또한 이동 전에 있던 명시적 배율도 유지됩니다.

API 변경사항

  • SessionCallbackProvider를 삭제하고 SpatialCapabilities로 대체했습니다.

기타 변경사항

  • minSDK을 24로 줄였습니다. 모든 Jetpack XR API는 런타임에 API 34를 계속 요구합니다.
  • Orbiter EdgeOffset.inner, EdgeOffset.outer, EdgeOffset.overlap 생성자는 더 이상 @Composable 메서드가 아니므로 구성 불가능한 컨텍스트에서 사용할 수 있습니다.
  • 최신 UX 사양에 맞게 공간 고도 수준을 업데이트합니다.
  • SubspaceSemanticsInfo 인터페이스를 MeasurableLayout에 구현합니다.
  • SubspaceModifierElement에서 SubspaceModifierNodeElement로 이름이 변경되었습니다.

버그 수정

  • SubspaceModifier 순서를 안정화하도록 수정했습니다. SubspaceModifier가 더 안정적으로 작동합니다. 이제 오프셋, 회전, 크기 조절, 이동 가능, 크기 조절 가능 수정자를 어떤 순서로든 사용할 수 있습니다.

버전 1.0.0-alpha01

2024년 12월 12일

androidx.xr.compose:compose-*1.0.0-alpha01이 출시되었습니다.

초기 출시의 기능

  • XR용 Jetpack Compose의 첫 번째 개발자 출시 버전입니다. 기존 2D 앱을 XR로 이식하든 처음부터 새 XR 앱을 만들든, 행과 열과 같은 익숙한 Compose 개념을 사용하여 XR에서 공간 UI 레이아웃을 만듭니다. 이 라이브러리는 하위 공간 및 공간 컴포저블(예: 공간 패널 및 오비터)을 제공하므로 기존 2D Compose 또는 뷰 기반 UI를 공간 레이아웃에 배치할 수 있습니다. 이 버전에서는 UI를 기준으로 3D 모델과 같은 SceneCore 항목을 배치할 수 있는 볼륨 하위 공간 컴포저블이 도입되었습니다. 이 개발자 가이드에서 자세히 알아보세요.

    • Subspace: 이 컴포저블은 앱의 UI 계층 구조 내 어디에나 배치할 수 있으므로 파일 간의 컨텍스트를 잃지 않고 2D 및 공간 UI의 레이아웃을 유지할 수 있습니다. 이렇게 하면 전체 UI 트리를 통해 상태를 호이스팅하거나 앱을 다시 설계할 필요 없이 XR과 다른 폼 팩터 간에 기존 앱 아키텍처와 같은 항목을 더 쉽게 공유할 수 있습니다.

    • SpatialPanel: 공간 패널은 앱 콘텐츠를 표시할 수 있는 하위 공간 컴포저블입니다. 예를 들어 공간 패널에 동영상 재생, 정지 이미지 또는 기타 콘텐츠를 표시할 수 있습니다.

    • Orbiter: Orbiter는 공간 UI 구성요소입니다. 해당 공간 패널에 연결되도록 설계되었으며 해당 공간 패널과 관련된 탐색 및 상황별 작업 항목을 포함합니다. 예를 들어 동영상 콘텐츠를 표시하는 공간 패널을 만든 경우 오비터 내에 동영상 재생 컨트롤을 추가할 수 있습니다.

    • 볼륨: UI를 기준으로 3D 모델과 같은 SceneCore 항목을 배치합니다.

  • 공간 레이아웃: 여러 공간 패널을 만들고 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: 서라운드 오디오

알려진 문제

  • 현재 XR용 Jetpack Compose를 사용하려면 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 속성을 사용하여 전체 공간으로 직접 실행되면 활동/애플리케이션이 처음에 홈 공간에서 열린 후 전체 공간으로 전환됩니다.
  • 볼륨 컴포저블의 glTF가 처음에는 잘못된 위치에서 깜박일 수 있습니다.
  • 크게 이동된 패널에서 SpatialDialog를 사용하면 콘텐츠가 잘못된 방향으로 밀립니다.