XR용 Jetpack Compose

Android XR의 공간 기능을 활용하는 공간 UI 레이아웃을 선언적으로 빌드합니다.
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
2024년 12월 12일 - - - 1.0.0-alpha01

종속 항목 선언

XR Compose의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Groovy

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

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

Kotlin

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

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

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

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

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

버전 1.0

버전 1.0.0-alpha01

2024년 12월 12일

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

초기 출시의 기능

  • XR용 Jetpack Compose의 초기 개발자 출시입니다. 행 및 열과 같은 익숙한 Compose 개념을 사용하여 기존 2D 앱을 XR로 포팅하거나 새 XR 앱을 처음부터 만드는지와 관계없이 XR에서 공간 UI 레이아웃을 만듭니다. 이 라이브러리는 기존 2D Compose 또는 뷰 기반 UI를 공간 레이아웃에 배치할 수 있는 공간 패널 및 오리터와 같은 하위 공간 및 공간 컴포저블을 제공합니다. Volume 하위 공간 컴포저블을 도입합니다. 이 컴포저블을 사용하면 3D 모델과 같은 SceneCore 항목을 UI를 기준으로 배치할 수 있습니다. 개발자 가이드에서 자세히 알아보세요.

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

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

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

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

  • 공간 레이아웃: SpatialRow, SpatialColumn, SpatialBox, SpatialLayoutSpacer를 사용하여 여러 공간 패널을 만들고 공간 레이아웃 내에 배치할 수 있습니다. SubspaceModifier를 사용하여 레이아웃을 맞춤설정합니다.

  • 공간 UI 구성요소: 이러한 요소는 2D UI에서 재사용할 수 있으며 공간 속성은 공간 기능이 사용 설정된 경우에만 표시됩니다.

    • SpatialDialog: 패널이 z-depth에서 약간 뒤로 밀려 올라간 대화상자를 표시합니다.
    • SpatialPopUp: 패널이 z-depth에서 약간 뒤로 밀려 올라간 팝업을 표시합니다.
    • SpatialElevation: SpatialElevationLevel를 설정하여 고도를 추가할 수 있습니다.
  • SpatialCapabilities: 공간 기능은 사용자가 앱 또는 시스템과 상호작용할 때 변경될 수 있으며 앱 자체에서 변경할 수도 있습니다(예: 홈 스페이스 또는 전체 스페이스로 이동). 문제를 방지하려면 앱에서 LocalSpatialCapabilities.current를 확인하여 현재 환경에서 지원되는 API를 결정해야 합니다. isSpatialUiEnabled: 공간 UI 요소 (예: SpatialPanel) isContent3dEnabled: 3D 객체 isAppEnvironmentEnabled: 환경 isPassthroughControlEnabled: 애플리케이션이 패스스루 상태를 제어할 수 있는지 여부 isSpatialAudioEnabled: 서라운드 오디오

알려진 문제

  • 현재 XR용 Jetpack Compose를 사용하려면 최소 SDK 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를 사용하면 콘텐츠가 잘못된 방향으로 이동합니다.