XR용 Jetpack Compose
| 최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
|---|---|---|---|---|
| 2026년 9월 23일 | - | - | 1.0.0-beta01 | - |
종속 항목 선언
XR Compose의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta01") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.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에는rememberSpatialActivityPanelController를 사용하여 인스턴스화된SpatialActivityPanelController이 (가) 삽입된 활동을 실행하고 관리해야 합니다. (Id25c6) rotateToLookAtUser에서upDirection매개변수를 삭제하고 회전 제약 조건 매개변수(isYawUpdateEnabled및pitchLimits)를 추가했습니다. (I1370a)
버그 수정
- 다양한
InteractionPolicy문제가 수정되었습니다. 컴포저블 또는 하위 요소 (예: Orbiter)가 처분 시퀀스를 시작할 때 입력 이벤트가 발생하면 비정상 종료가 발생했습니다. 또한 하위 요소가 마우스 오버 이벤트를 수신하는 문제도 수정합니다. (Ifc477) - 작은 FOV 기기에서 잘림을 방지하기 위해
RotateToLookAtUserActivity의 패널 크기를 줄였습니다. (I8d672)
알려진 문제
- 단일 활동에서 많은 패널을 만들면 패널이 소멸된 후에도 표시되는 항목이 손상될 수 있는 Compose XR 패널 문제가 있습니다.
버전 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)- 이제
SpatialGltfModelAPI가 실험용이므로 사용하려면 선택해야 합니다. (I4557e) system의 크기를 조절할 수 있도록 null 허용으로 설정 (Ib0093)- 테스트를 위해
SubspaceSemanticsInfo에서Density노출 (I2e826) ResizePolicy기본 옵션의 이름을system로 바꾸고 매개변수가 없는 새Default옵션을 추가합니다. (Ic8b16)FollowTarget를 실험용으로 표시 이제 전체FollowingSubspaceAPI가 실험용입니다. (Id4ee3)GltfAnimationAPI 삭제 (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 변경사항
ComponentOverrideAPI 삭제 (I820c4)GltfAnimation및SpatialGltfModelAnimationAPI가 실험용으로 표시되었습니다. 일부 속성이 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매개변수가 지원 중단되고 숨겨집니다. 이제 하위 공간 수정자에서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로 변경하고 통합된alignAPI를 위해 개별 방향 오프셋 메서드를 삭제했습니다. (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)SpatialGltfModelAPI 업데이트:SpatialGltfModelSource.fromResource를 통해 리소스에서 모델을 로드하는 지원이 추가되었습니다.SpatialGltfModelAnimation에서 속도가playbackSpeed로 이름이 변경되었고 resume() 메서드가 추가되었습니다.SpatialGltfModelStatus.Loaded 및 Loading이 이제 객체입니다. (I523de)rotateToLookAtUser를 실험용 API로 표시했습니다. (I86c16)- 보호된 변수
targetCurrentPose를 로컬 변수currentTargetPoseMeter로 이동하고 이름을 변경했습니다. (Ia557c) - 객체가 레이아웃 크기 내에서 렌더링되는 위치를 포함하도록
SpatialPanel및SpatialExternalSurfacekdoc 업데이트 (I72104) SpatialGltfModelState내에서SpatialGltfModel로드 로직을 캡슐화하고 실패 동작을 명확히 했습니다. (Ibe98b)SubspaceModifer.sizekdocs에서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) Sizekdocs 업데이트 (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에 추가 변경사항이 적용될 예정이므로 Orbiters의 지원 중단 알림을 억제하고 향후 출시에서 Orbiter 변경사항을 주시하는 것이 좋습니다.
SceneCoreEntity를 사용하여 glTF를 렌더링하는 사용자는 glTF가 렌더링되도록session.scene.activitySpace를GltfModel.create호출의parent매개변수에 전달해야 합니다.- 개발자가 Compose for XR 앱에 Gltf를 추가할 수 있도록
SpatialGltfModelAPI 추가 개발자는 gltf 모델 내에서 애니메이션과 노드를 쿼리할 수도 있습니다. (I8b542, b/495422586) SceneCoreEntitySizeAdapter을 클래스에서 인터페이스로 변경 (I5a784, b/475292310)SurfaceProtection에서SpatialExternalSurfaceProtection로 이름이 변경되었습니다.SpatialExternalSurfacekdocs 업데이트 (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)SpatialGltfModelAPI는 추가 테스트가 진행되는 동안 이번 출시에서 제한된 것으로 표시됩니다. (Ibf003, b/466090694)DeviceTrackingMode.LAST_KNOWN의 이름을SPATIAL_LAST_KNOWN로 변경하고 (지원 중단된 대체 포함) 3DoF 추적을 위해INERTIAL_LAST_KNOWN를 추가하고TRACKING_DEGRADED~TrackingState를 추가했습니다. (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 변경사항
- glTF를 렌더링하고 애니메이션을 제어하는
SpatialGltfModelAPI와SpatialGltfModelAnimationAPI를 추가합니다.SpatialGltfModelState이AutoCloseable로 변경되었으며 이제 리소스를 확보하려면 닫아야 합니다. (I11fde, b/466065486, b/481379924) 하지만SpatialGltfModelAPI는 추가 테스트가 진행 중이므로 이번 출시에서 제한된 것으로 표시됩니다. (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에는 이러한 커밋이 포함되어 있습니다.
새로운 기능
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및SpatialColumnAPI는 지원 중단됩니다. 대신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)- '지연 잠금' 용어를 '소프트 잠금'으로 대체하도록
UserSubspaceAPI가 업데이트되었습니다. (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로 대체되어 지원 중단되었습니다.- 하위 공간 API 동작이 권장 포즈와 스케일에서 애플리케이션 전체 하위 공간만 제공하도록 변경됩니다.
PlanarEmbeddedSubspaceAPI는 2D 컨텍스트에 삽입된 하위 공간을 제공하기 위해 도입되었습니다. (Id3343)
SubspaceModifier.NodeAPI에shouldAutoInvalidate플래그가 추가되었습니다. (I93902)- 개발자가 부모의 수신 측정 제약 조건을 무시하고
@SubspaceComposable의 크기를 특정 범위로 제한할 수 있는 API에required(Size|Width|Depth|Height)를 추가했습니다. (Ifaa78) @SubspaceComposable의 크기가 변경될 때 개발자가 반응할 수 있는 간단하고 집중적인 콜백을 제공하는SubspaceModifier.onSizeChanged를 추가했습니다. (I994f9)- 볼륨 API가 삭제되었습니다. 볼륨 API 대신
SceneCoreEntityAPI를 사용해야 합니다. (I4162b) SubspaceLayoutModifierNode.requestRelayout을invalidateMeasurement/invalidatePlacement로 분할 (I14805)- 개발자가 Compose에서 glTF를 렌더링할 수 있는
SpatialGltfModelAPI를 추가했습니다. (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)
버그 수정
- 하위 스페이스가 있는 활동을 소멸시킬 때 비정상 종료 방지 (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의 KDocs가 개선되었습니다. (I27b70, b/444467891)SpatialRow및SpatialColumn와 같은 3D 레이아웃에서 기본 축을 따라 하위 요소를 정렬하기 위한SpatialArrangement가 도입되었습니다. 이 새로운 API는 LTR 및 RTL 레이아웃 방향을 모두 완전히 지원하며Start,End,Center,SpaceBetween,SpaceAround,SpaceEvenly등 2D Compose의 친숙한 정렬 옵션을 제공합니다. (I7db38, b/436289959)SubspaceModifier.Node의 기본 인터페이스를 추가하여 확장 인터페이스의 유형 안전성과 유용성을 개선했습니다(예:CompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(내부) (Iede00, b/440599394, b/440599394)
SpatialExternalSurface제한 해제 (I33315, b/439646773)SubspaceModifier를 Subspace 컴포저블에 도입하고 제약 조건 매개변수를 크기 관련SubspaceModifiers이 있는SubspaceModifier로 대체allowUnboundedSubspace이 true인 경우에도 하위 공간에는 무한 제약 조건이 있을 수 있습니다. (Ib06e6, b/433331675)DragPolicy()및ResizePolicy()가SpatialPanel및SpatialExternalSurfaceAPI의 일부가 되었으므로 이동 가능하고 크기 조절 가능한SubspaceModifiers가 지원 중단됩니다. (I397bf, b/437924639)- 공간 레이아웃에
LayoutDirection지원이 추가되었습니다. 이제SpatialAlignment을 사용하는 컴포저블이 LTR 및 RTL 컨텍스트에서 요소를 올바르게 배치합니다. (I964bb, b/436300273) - 이러한 동작이 지원되는 컨테이너에만 적용될 수 있도록
PanelAPI에 크기 조절 가능 및 이동 가능 매개변수 추가 (Id491c) - 너비, 높이, 깊이의 정확한 최소 및 최대 제약 조건을 설정할 수 있는
sizeIn,widthIn,heightIn,depthInSubspaceModifiers가 추가되었습니다. (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컴포저블 (I40ef2, b/391705799) SubspaceModifier.aspectRatio추가 (Ide5ab, b/399729509, b/414762147)SceneCore와 XR용 Compose 간의 상호 운용성을 개선하기 위해SceneCoreEntityAPI가 추가되었습니다. (I50bb3, b/423020989)- 크기가 조정되지 않은
GravityAligned기능을 지원하는GravityAlignedsubspaceAPI 제공 (I07359)
API 변경사항
SpatialDialog()는SpatialDialogProperties.dismissOnBack누르기 구성을 따릅니다. (Ib453b, b/416797132)- 미터로 표현되므로
minimumPanelDimension를 새로운 기본 측정기준 크기인Dimensions(0.1f, 0.1f, 0.1f)로 업데이트합니다. (Ib852a) - 이제 하위 공간과 오비터가 홈 공간에서 그리고 앱이 백그라운드에 있을 때 내부 상태를 유지합니다. 홈 스페이스 모드에서도 서브스페이스는 풀 스페이스 모드로 전환할 준비를 위해 장면을 설정합니다. (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와 구분하기 위해 XRPlaceable의 이름을SubspacePlaceable으로 변경했습니다. (I74874) - 오비터 설정을 삭제하고
shouldRenderInNonSpatial를 새 매개변수로 추가 또한EdgeOffset클래스를 삭제하고Orbiter()함수를 통합하기 위해orbiterOffsetType을 새 매개변수로 추가합니다.OrbiterEdge을ContentEdge으로 이름을 바꿉니다. (Iebf3d) - Compose의
Measurable유형과 유형을 구분하기 위해Measurable의 이름을SubspaceMeasurable로 변경했습니다. (I9726c) MeasureResult의 이름을SubspaceMeasureResult로 변경 (I9f34d)Subspace컴포저블과 함께 Compose의setContent을 사용하기 위해setSubspaceContentAPI가 삭제되었습니다. (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를 지원 중단하는 새로운SpatialPanelAPI를 추가했습니다. - 무한 제약 조건을 나타내는
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의 시야에 의해 너비와 높이로 제한될 수 있습니다. 시야를 확인할 수 없는 경우 기본 시야 너비 및 높이 값이 사용됩니다. Movable수정자에 새로운 콜백onMoveStart및onMoveEnd이 추가되었습니다.onMoveStart및onMoveEnd콜백은 사용자가 이동 가능한 수정자를 사용하여 하위 공간 컴포저블을 이동하기 시작하고 이동을 종료할 때 호출됩니다.SpatialRow,SpatialPanel과 같은 공간 API에서name매개변수가 삭제되었습니다. 공간 컴포즈 트리를 디버깅하려면 대신SubspaceModifier.testTag를 사용하세요.spatialElevationLevel및content만 있는 지원되지 않는SpatialPopup오버로드가 삭제되었습니다.onDimissRequest를 지원하는 인터페이스를 사용하세요.- Movable 수정자의
onPoseChange콜백이 삭제되었습니다. 대신onMove를 사용합니다. SubspaceModifiers이 분리되었거나 현재 분리 중인 경우 효과가 더 이상 적용되지 않습니다.- 기존
SpatialRowAPI가SpatialRow및SpatialCurvedRow로 분할되었습니다. 이전에SpatialRow의curveRadius매개변수를 사용했다면 이제 동일한 동작을 제공하는SpatialCurvedRow을 대신 사용하세요. MainPanel및ActivityPanel은 유사한 최신 시스템 이미지에서 실행될 때 더 이상 제목 표시줄이 없습니다.- 이제 알파 및 크기 조절 수정자를 누적할 수 있으며 최종 적용된 알파 또는 크기 조절 값에 값이 곱해집니다.
- 이동 가능한 수정자의
onPoseChange콜백이 더 부드러운 포즈 이동을 실행하도록 최적화되었습니다. - 이제 이동 가능 및 크기 조절 가능 수정자가 상태 변경이 리컴포지션을 트리거하도록 기본 스레드에서 콜백을 실행합니다.
SubspaceLayout의 상태 변경이 리레이아웃을 트리거하도록 레이아웃 및 측정 단계에 상태 관찰을 추가했습니다.- 기존 수정자를 더 잘 재사용하도록 수정자 체인을 최적화했습니다.
버그 수정
SpatialDialog가 표시될 때 스크림이 중지됨 (Ic4594)- 수정자 노드가 분리된 동안 이루어진 레이아웃 요청이 이제 무시됩니다.
- 이동 가능 및 크기 조절 가능 수정자로 트리거되는 레이아웃 재조정 단계를 삭제했습니다.
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에는 이러한 커밋이 포함되어 있습니다.
새로운 기능
- 이제 활동 패널은 공간 대화상자가 활성화되면 콘텐츠를 스크림할 수 있습니다.
- 이제
OrbiterAPI를SubspaceComposable컨텍스트에서 사용할 수 있으며, 오비터가 가장 가까운SubspaceLayout기반 컴포저블 상위에 연결됩니다. - 맞춤 위치 기반 수정자를 허용하기 위해
LayoutCoordinatesAwareModifierNode도입 SubspaceModifier.Node에 연결/분리 수명 주기 메서드가 추가되었습니다.- 이동 가능한 수정자에
scaleWithDistance를 추가했습니다.scaleWithDistance가 사용 설정되면 이동된 하위 공간 요소가 늘어나거나 줄어듭니다. 또한 이동 전의 명시적 스케일도 유지됩니다.
API 변경사항
SpatialCapabilities을 위해SessionCallbackProvider이 삭제되었습니다.
기타 변경사항
minSDK을 24로 줄였습니다. 모든 Jetpack XR API는 런타임에 API 34가 계속 필요합니다.OrbiterEdgeOffset.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 또는 Views 기반 UI를 공간 레이아웃에 배치할 수 있는 공간 패널, 오비터와 같은 하위 공간 및 공간 컴포저블을 제공합니다. UI를 기준으로 3D 모델과 같은 SceneCore 엔티티를 배치할 수 있는 볼륨 하위 공간 컴포저블이 도입되었습니다. 자세한 내용은 이 개발자 가이드를 참고하세요.
Subspace: 이 컴포저블은 앱의 UI 계층 구조 내 어디에나 배치할 수 있으므로 파일 간 컨텍스트를 잃지 않고 2D 및 공간 UI의 레이아웃을 유지할 수 있습니다. 이렇게 하면 전체 UI 트리를 통해 상태를 호이스팅하거나 앱을 다시 설계하지 않고도 XR과 기타 폼 팩터 간에 기존 앱 아키텍처와 같은 항목을 더 쉽게 공유할 수 있습니다.SpatialPanel: 공간 패널은 앱 콘텐츠를 표시할 수 있는 하위 공간 컴포저블입니다. 예를 들어 공간 패널에 동영상 재생, 정지 이미지 또는 기타 콘텐츠를 표시할 수 있습니다.
Orbiter: Orbiter는 공간 UI 구성요소입니다. 해당 공간 패널에 연결되도록 설계되었으며 해당 공간 패널과 관련된 탐색 및 상황별 작업 항목이 포함되어 있습니다. 예를 들어 동영상 콘텐츠를 표시하는 공간 패널을 만든 경우 오비터 내에 동영상 재생 컨트롤을 추가할 수 있습니다.
볼륨: UI를 기준으로 SceneCore 엔티티(예: 3D 모델)를 배치합니다.
공간 레이아웃:
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 이상이어야 합니다. 이 문제를 해결하려면 minSDK가 23인 상태로 빌드하고 실행할 수 있도록 다음 매니페스트 항목
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>를 추가하면 됩니다. - 현재 Jetpack XR 앱은 AndroidManifest에서
android.permission.SCENE_UNDERSTANDING권한을 요청해야 합니다. - 앱이 매니페스트에서
PROPERTY_XR_ACTIVITY_START_MODE속성을 사용하여 전체 공간으로 직접 실행되면 활동/애플리케이션이 전체 공간으로 전환되기 전에 홈 공간에서 처음 열립니다. - 볼륨 컴포저블의 glTF가 처음에 잘못된 위치에서 깜박일 수 있습니다.
- 크게 이동된 패널에서 SpatialDialog를 사용하면 콘텐츠가 잘못된 방향으로 이동합니다.