Jetpack XR용 ARCore

인식 기능을 사용하여 디지털 콘텐츠를 현실 세계로 가져오세요.
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
2026년 5월 19일 - - - 1.0.0-alpha14

종속 항목 선언

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

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

Groovy

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha14"
}

Kotlin

dependencies {
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha14")
}

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

의견

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

새로운 문제 제출하기

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

버전 1.0

버전 1.0.0-alpha14

2026년 5월 19일

androidx.xr.arcore:arcore-*:1.0.0-alpha14이 출시되었습니다. 버전 1.0.0-alpha14에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • GeospatialMode.SPATIAL을 위해 GeospatialMode.VPS_AND_GPS를 지원 중단하고 IMU와 GPS만 사용하는 새로운 저전력 추적 모드 GeospatialMode.INERTIAL를 도입합니다. (I1e6cd)
  • 맞춤 앵커 예외 클래스: AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException, AnchorUnsupportedObjectException이 이제 RuntimeException 인스턴스이며 검사하지 않습니다. (I9356e)
  • TestArDevice, TestAugmentableObject, TestDepthMap, TestEye, TestFace, TestGeospatial, TestHand, TestPlane, TestRenderViewpoint, TestTrackable를 포함한 ArCoreTestRule API 추가 (I0ad3c)
  • AnchorLoadInvalidUuid, AnchorCreateUnsupportedObject, AnchorCreateUnsupportedLocation, AnchorCreateNotAuthorized를 삭제합니다. 이제 이러한 오류는 모두 런타임의 예외입니다. AnchorCreateIllegalState를 삭제합니다. 대부분의 경우 AnchorCreateTrackingUnavailable로 대체되었습니다. AnchorException 및 파생 클래스 AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException, AnchorUnsupportedObjectException 추가 (I4c4dd)

알려진 문제

  • arcore-projected 런타임 구현을 사용하는 경우 연결이 어려운 시나리오에서 지리 공간 추적이 손실될 수 있습니다. 애플리케이션에서 이 런타임 구현을 삭제하고 대신 arcore-play-services를 사용하면 문제가 해결됩니다. 다음 버전에서는 이 구성이 기본 구성이 됩니다.

외부 기여

  • 맞춤 마커 추적을 위한 AugmentedImage API 추가 (I0cf09)

버전 1.0.0-alpha13

2026년 5월 6일

androidx.xr.arcore:arcore-*:1.0.0-alpha13이 출시되었습니다. 버전 1.0.0-alpha13에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • TrackingStateVpsAvailabilityResultandroidx.xr.arcore package로 이동했으며 androidx.xr.runtime의 유형은 이제 지원 중단되었습니다. (Ic7930, b/480462213)
  • Plane.Type에서 PlaneType로 이름이 변경되었습니다. (I8c90c, b/482675376)
  • Hand.HandSide에서 HandSide로 이름이 변경되었습니다. (Ica562, b/482675376)
  • Plane.Label에서 PlaneLabel로 이름이 변경되었습니다. (Ic6b67, b/482675376)
  • Geospatial.Surface에서 GeospatialSurface로 이름이 변경되었습니다. (I1a8be, b/482675376)
  • Geospatial.State의 이름을 GeospatialState로 바꿨습니다. (I203fa, b/482675376)
  • NativeData API를 xr:runtime:runtime 라이브러리로 이동했습니다. (I87954, b/494251500)
  • 이제 Session.createSession.configure는 완전하지 않으며 when 문에 else 절이 필요합니다. (I9885e, b/495805998, b/495805998)
  • androidx.xr.runtime.FieldOfView가 지원 중단되었습니다. 대신 androidx.xr.runtime.math.FieldOfView를 사용합니다. (Ia01a0, b/480233045)
  • 위치, 오프셋, offsetType, 정렬, 고도 대신 OrbiterAnchorPoint + VolumeOffset 또는 OrbiterPoseProvider을 사용하도록 Orbiter를 변경했습니다. shouldRenderInNonSpatial 매개변수도 삭제했습니다. 개발자가 비공간에서 오비터가 렌더링되지 않기를 원한다면 if 문으로 오비터를 래핑하고 SpatialCapabilities를 확인해야 합니다. (I9fbb3, b/462428503)
  • 이동 가능한 수정자를 추가했습니다. 이러한 수정자는 현재 SpatialPanelsSpatialExternalSurface에서 잘 작동합니다. SpatialGltfModels에서도 곧 지원될 예정입니다. 하지만 모든 SubspaceComposables에서 잘 지원되도록 하는 것이 목표입니다. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • 개발자는 ArDevice.state 흐름을 관찰하여 State.trackingState를 모니터링하고 추적 충실도에 따라 애플리케이션의 렌더링이나 경고를 적절하게 조정해야 합니다. (Ic00f0, b/445466590)
  • HandJointType 열거형 값의 이름을 바꿨습니다. (Ifbc83, b/482670596)
  • FaceConfidenceRegion 상수의 이름이 변경되었습니다. (Ia62d5, b/482670596)
  • FaceBlendShapeType 상수의 이름이 변경되었습니다. (I33b8b, b/482670596)
  • CreatePoseFromGeospatialPoseErrorInternalCreateGeospatialPoseFromPoseErrorInternal를 추가했습니다. (I4bcf1, b/482666615)
  • DeviceTrackingMode.LAST_KNOWN의 이름을 SPATIAL_LAST_KNOWN로 변경하고 (지원 중단된 대체 포함) 3DoF 추적을 위해 INERTIAL_LAST_KNOWN를 추가하고 TRACKING_DEGRADED~TrackingState를 추가했습니다. (Ie661c, b/445466590)
  • GroupEntity가 지원 중단되었습니다. 기본 Entity 기능만 있는 Entity를 사용하려면 Entity 인터페이스를 반환하는 Entity.create를 호출하세요. (I4c450, b/473867483)
  • XrLog API를 추가했습니다. XrLog.isEnabledtrue로 설정하여 JetpackXR에서 로깅을 사용 설정하고 XrLog.Level을 사용하여 로그 수준을 설정합니다. (I76a1f, b/463460895, b/487378441)

버그 수정

버전 1.0.0-alpha12

2026년 3월 25일

androidx.xr.arcore:arcore-*:1.0.0-alpha12이 출시되었습니다. 버전 1.0.0-alpha12에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • Config.augmentedObjectCategories를 목록에서 세트로 변경했습니다. (I25a64, b/487376359)
  • androidx.xr.arcore.Eyeandroidx.xr.arcore.Hand 유형 (I42438, b/449032900)
  • 리소스 범위 지정에 Android 컨텍스트를 전달할 수 있도록 Session.create 오버로드를 추가했습니다. (I7d3fe, b/415805990, b/477386334)
  • FakeRuntimeAnchor.ANCHOR_RESOURCE_LIMITFakeRuntimeAnchor.anchorResourceLimit로 변경합니다. (I90841, b/431992235)
  • 향후 변경되거나 삭제될 수 있으므로 TiltGesture API를 실험용으로 설정 이 API를 사용하려면 @ExperimentalGesturesApi (Ic9858)을 선택하세요.
  • 구성에서 AugmentedObject 추적의 카테고리를 설정하는 기능 추가 (I1f6e4, b/480220930)

버그 수정

  • PerceptionRuntimeFactory의 실제 위치로 META-INF/services/ 파일을 업데이트하여 Chrome 빌드를 수정했습니다. (I7a801, b/481288291)

버전 1.0.0-alpha11

2026년 2월 25일

androidx.xr.arcore:arcore-*:1.0.0-alpha11이 출시되었습니다. 버전 1.0.0-alpha11에는 이러한 커밋이 포함되어 있습니다.

버전 1.0.0-alpha10

2026년 1월 28일

androidx.xr.arcore:arcore-*:1.0.0-alpha10이 출시되었습니다. 버전 1.0.0-alpha10에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 전환 진행 상황과 함께 기기 기울기 (위/아래) 상태를 안정적으로 감지하기 위한 반응형 Flow를 제공하는 TiltGesture API를 도입합니다. (Ic269f, b/448152779)
  • 이제 Jetpack XR용 ARCore는 XR 런타임 로깅 메커니즘을 사용합니다. 자세한 내용은 androidx.xr.runtime.Log를 참고하세요. (l52735, b/448697662)

API 변경사항

  • 이제 Geospatial.createPoseFromGeospatialPose이 OpenXR 지원 기기에서 작동합니다. (l362c6)

버전 1.0.0-alpha09

2025년 12월 3일

androidx.xr.arcore:arcore-*:1.0.0-alpha09이 출시되었습니다. 버전 1.0.0-alpha09에는 이러한 커밋이 포함되어 있습니다.

버전 1.0.0-alpha08

2025년 11월 19일

androidx.xr.arcore:arcore-*:1.0.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 이제 Jetpack XR의 ARCore가 Google Play AR 서비스를 사용할 수 있는 기기를 지원합니다.
  • VPS 가용성 및 포즈 변환을 위한 Geospatial API 추가 (I144dc)

버전 1.0.0-alpha07

2025년 10월 22일

androidx.xr.arcore:arcore-*:1.0.0-alpha07이 출시되었습니다. 버전 1.0.0-alpha07에는 이러한 커밋이 포함되어 있습니다.

버그 수정

  • :xr:arcore:arcore-openxr:xr:arcore:arcore에 구현 종속 항목으로 추가됨 (I47315, b/446999229)

버전 1.0.0-alpha06

2025년 9월 24일

androidx.xr.arcore:arcore-*:1.0.0-alpha06이 출시되었습니다. 버전 1.0.0-alpha06에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • ARCore 지원 테스트가 xr:arcore:arcore-testing 모듈로 이전되었습니다. (I25469)
  • 애플리케이션이 렌더링 목적으로 기기의 포즈와 디스플레이 구성을 검색할 수 있도록 ArDeviceRenderViewpoint 추가 (Ib7e3f)
  • HAND_JOINT_TYPE_ 접두사를 사용하여 HandJointType enum의 이름을 바꿉니다. (I3f7cd)
  • HandJointType이(가) xr:runtime:runtime에서 xr:arcore:arcore로 이동되었습니다. (Iadb9c, b/409058039)
  • Hand.State는 이제 성능 지향 애플리케이션에 쉽게 액세스할 수 있는 형식으로 공동 포즈를 사용하여 java.nio.FloatBuffer를 노출합니다. (I55e27)

버전 1.0.0-alpha05

2025년 7월 30일

androidx.xr.arcore:arcore:1.0.0-alpha05, androidx.xr.arcore:arcore-guava:1.0.0-alpha05androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05이 출시되었습니다. 버전 1.0.0-alpha05에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 개발자가 핸드 측 정보 (I270bd)를 가져올 수 있도록 getPrimaryHandSide 추가
  • 지리 공간 VPS 사용 가능 여부 API 추가 (I58573)
  • checkVpsAvailability용 ARCore API 추가 (Idbded)
  • Java 개발자가 사용할 수 있도록 :xr:arcore:arcore-rxjava3stateFlowable 확장 함수가 추가되었습니다. (I083aa, b/427247794)

API 변경사항

  • *Mode 값의 이름이 동작을 반영하도록 변경되었습니다. (I6d247, b/414648065)
  • 기본 ARCore 아티팩트 (xr:arcore:arcore)에는 Kotlin 스타일 비동기 API만 포함됩니다. Java 개발자는 xr:arcore:arcore-rxjava3 라이브러리를 사용하여 호환되는 API에 액세스할 수 있습니다. (Ia525e, b/422794329)
  • 기본 ARCore 아티팩트 (xr:scenecore:scenecore)에는 Kotlin 스타일 비동기 API만 포함됩니다. Java 개발자는 xr:arcore:arcore-guava 라이브러리를 사용하여 호환되는 API에 액세스할 수 있습니다. (Iffcb4, b/422773524)
  • Java 개발자가 사용할 수 있도록 AnchorGuavaAnchor.persistAsync()가 추가되었습니다. (I4af1c, b/425984631)
  • Java 개발자가 사용할 수 있도록 EarthGuavaEarth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface)가 추가되었습니다. (I66357, b/425992992)
  • Java 개발자는 GltfModel.kt에서 GltfModel.createAsync의 확장 함수를 사용합니다. GltfModel의 비동기 함수가 삭제됩니다. (I0af60)
  • 이제 이 라이브러리는 유형 사용인 JSpecify nullness 주석을 사용합니다. Kotlin 개발자는 다음 컴파일러 인수를 사용하여 올바른 사용을 강제해야 합니다. -Xjspecify-annotations=strict (Kotlin 컴파일러 버전 2.1.0부터 기본값임) (Ia8420, b/326456246)
  • Java 개발자가 사용할 수 있도록 :xr:arcore:arcore-rxjava3subscribeAsFlowable 확장 함수가 추가되었습니다. (Id3e49, b/427277298)

버전 1.0.0-alpha04

2025년 5월 7일

androidx.xr.arcore:arcore:1.0.0-alpha04이 출시되었습니다. 버전 1.0.0-alpha04에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • Kotlin 2.0으로 출시된 프로젝트는 KGP 2.0.0 이상을 사용해야 합니다. (Idb6b5)
  • TrackingStateHandJointType이 ARCore에서 런타임으로 이동했습니다.
  • Hand.State.isActive (boolean)Hand.State.trackingState (androidx.xr.runtime.TrackingState)로 변경되었습니다.
  • UUID가 유효하지 않으면 Anchor.loadAnchor.AnchorLoadInvalidUuid을 반환합니다.

버전 1.0.0-alpha03

2025년 2월 26일

androidx.xr.arcore:arcore:1.0.0-alpha03은 마지막 알파 이후 중요한 변경사항 없이 출시되었습니다. 버전 1.0.0-alpha03에는 이러한 커밋이 포함되어 있습니다.

버전 1.0.0-alpha02

2025년 2월 12일

androidx.xr.arcore:arcore:1.0.0-alpha02이 출시되었습니다. 버전 1.0.0-alpha02에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 핸드 트래킹 지원이 추가되었습니다. Hand.leftHand.right를 사용하여 추적 정보에 액세스합니다.
  • 이제 앵커를 생성하는 API (Anchor.create, Anchor.load, Plane.createAnchor)가 모두 AnchorCreateResult를 반환하고 AnchorCreateResourcesExhausted를 올바르게 구현합니다.

버그 수정

  • Anchor.detach은 세션 업데이트 스레드와의 경합 상태로 인해 더 이상 치명적인 비정상 종료를 일으키지 않습니다.
  • 에뮬레이터에서 실행할 때 Anchor.create가 더 안정적임

버전 1.0.0-alpha01

2024년 12월 12일

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

초기 출시의 기능

기존 ARCore 라이브러리에서 영감을 받은 Jetpack XR용 ARCore 라이브러리는 디지털 콘텐츠와 실제 세계를 혼합하는 기능을 제공합니다. 이 라이브러리에는 모션 추적, 영구 앵커, 적중 테스트, 시맨틱 라벨링 (예: 바닥, 벽, 테이블 상판)을 사용한 평면 식별이 포함됩니다. 개발자 가이드를 확인하여 Jetpack XR용 ARCore 사용에 대해 자세히 알아보세요.

  • Session: Jetpack XR용 ARCore는 내부적으로 Jetpack XR 런타임을 사용하여 기능을 지원합니다. 세션을 사용하여 대부분의 ARCore for Jetpack XR API와 상호작용하므로 세션 문서를 살펴보세요.

  • Plane: 평면을 사용하여 주변 환경을 파악합니다. 각 평면에는 평면을 의미적으로 설명하는 Label가 있습니다. subscribe를 사용하여 감지된 최신 평면에 관한 알림을 받거나 state를 사용하여 특정 평면의 변경사항에 관한 알림을 받을 수 있습니다.

  • Anchor: 가상 객체와 실제 위치 간의 링크입니다. 앵커는 공간의 특정 위치 (create 사용) 또는 Trackable (createAnchor 사용)에 연결할 수 있습니다.

    • 앵커는 세션 간에 재사용할 수 있습니다. persist을 사용하여 저장하고, getPersistedAnchorUuids을 사용하여 열거하고, load을 사용하여 검색할 수 있습니다. 더 이상 사용하지 않는 경우 unpersist해야 합니다.

    • 앵커는 Jetpack XR용 ARCore와 Jetpack SceneCore 간에 상호 운용이 가능합니다. 앵커를 사용하여 AnchorEntity를 만들거나 기존 AnchorEntity가 있는 경우 getAnchor를 사용하여 지원 앵커를 검색할 수 있습니다.

    • hitTest를 사용하여 자연스러운 사용자 상호작용을 제공합니다. hitTest는 Ray를 사용하여 교차하는 콘텐츠를 확인하고 해당 위치에서 Anchor를 만듭니다. InputEvent에서 hitTest를 실행하는 것이 좋습니다.

알려진 문제

  • unpersist 호출과 getPersistedAnchorUuids에서 반환된 결과에서 UUID가 삭제되는 사이에 지연이 발생할 수 있습니다.

  • create는 시스템에 새 앵커를 반환할 리소스가 충분한지 확인하지 않습니다. 과도한 양의 앵커를 만들면 비정상 종료가 발생할 수 있습니다.

  • 이전에 유지되었다가 유지되지 않은 앵커를 유지하는 것은 현재 지원되지 않습니다.

  • 에뮬레이터에서의 사용은 지원되지만 실제 기기에서 실행할 때만큼 안정적이지 않을 수 있습니다. 특히 create 호출이 네이티브 코드 오류로 실패하고 활동이 즉시 종료될 수 있습니다.

  • 특정 상황에서는 '앵커가 유지되지 않았습니다'라는 메시지와 함께 persist를 호출할 때 RuntimeException가 잘못 발생할 수 있습니다. 이러한 상황에서도 함수는 계속 성공하고 앵커는 유지됩니다. persist 호출을 try 블록으로 래핑하여 문제를 해결하는 것이 좋습니다.