Jetpack Compose для XR

Декларативно создавайте макеты пользовательского интерфейса, которые используют возможности Android XR.
Последнее обновление Основная версия Релиз-кандидат Бета-версия Альфа-версия
21 октября 2026 г. - - 1.0.0-beta02 -

Объявление зависимостей

Чтобы добавить зависимость от XR Compose, добавьте в проект репозиторий Maven от Google. Подробную информацию можно найти в статье Репозиторий Google Maven.

Добавьте зависимости для нужных артефактов в файл build.gradle приложения или модуля:

классный

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"
}

Котлин

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. Если вы обнаружите новые проблемы или у вас появятся идеи по улучшению этой библиотеки, сообщите нам. Прежде чем сообщать о новых ошибках, изучите уже добавленные. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.

Создать новую проблему

Дополнительную информацию можно найти в документации по системе отслеживания ошибок.

Версия 1.0

Версия 1.0.0-beta02

21 октября 2026 г.

Данные "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).
  • Параметр halfLifeMs в FollowMode.soft() переименован в halfLifeMillis. (I39187)
  • PitchLimits преобразован в @JvmInline value class, а два числа с плавающей запятой упакованы в Long, чтобы исключить выделение объектов. (Id43c3)
  • Добавлены новые параметры для FollowMode.soft: halfLifeMs, startDelay и startThresholds. Удален параметр durationMs, поскольку он больше не нужен в связи с переходом от алгоритма smoothStep к алгоритму exponentialDecay. (If0140)
  • Удалите устаревшую перегрузку SpatialActivityPanel. Используйте перегрузку SpatialActivityPanel, которая принимает SpatialActivityPanelController. (I5abc3)
  • Включите переходы между 3D- и 2D-контентом Composable в рамках одного действия в FullSpaceMode. Это изменение регулируется правилом SpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237)
  • Добавлена экспериментальная перегрузка Subspace, принимающая параметр FollowTarget для поддержки следующего контента. (Iec1a9)
  • Удалите устаревшие модификаторы перемещения. Используйте вместо него новый модификатор movable, который принимает новый MovePolicy в качестве параметра. (Ib135d)
  • Удалить устаревший DragPolicy. Используйте вместо него SubspaceModifier.movable(). (I108d4)
  • Прекращена поддержка перегрузок Slider и RangeSlider без сохранения состояния в пользу версий с сохранением состояния. Переименованы activeRangeStart и activeRangeEnd в RangeSliderState на startValue и endValue. Устаревшие непродвигаемые и экспериментальные API Slider заменены на DeprecationLevel.HIDDEN. (If8995)

Исправление ошибок

  • Исправлена ошибка RotateToLookAtUser. Добавлено свойство poseInActivitySpace, чтобы обеспечить правильный расчет позы для всех типов подпространств, включая прикрепленные к якорям или пользователям.Ica367b
  • Исправлен сбой ограничений, когда Orbiter прикреплен к большим панелям (I8c4bf).
  • Исправлена ошибка в SubspaceLayoutNode, из-за которой removeAll() вызывал ненужные распределения ArrayList. Также исправлена производительность расчета глубины. I34a10a
  • Зависимость androidx.lifecycle:lifecycle-runtime обновлена до версии 2.10.0. Эта версия необходима для запуска встроенных проверок времени выполнения жизненного цикла с AGP версии 9.5.0-alpha04 или более поздней. (I99bfd, b/556807521)
  • Улучшены kdocs, связанные с AudioOutputProvider, чтобы подчеркнуть, что его не следует повторно использовать с несколькими экземплярами ExoPlayer (I6b18e).
  • Исправлены незначительные орфографические и грамматические ошибки в KDoc (Id3ba6).

Известные проблемы

  • Эта версия androidx.xr.compose зависит от androidx.xr.scenecore:1.0.0-rc01, в которой есть известная утечка памяти. В конфигурации сборки вы можете явно переопределить зависимость SceneCore на версию 1.0.0, в которой исправлена утечка памяти.

Версия 1.0.0-beta01

23 сентября 2026 г.

Данные "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. Используйте новый SubspaceModifier.resizable с новым ResizePolicy. (I59e6b)
  • Добавлен параметр isPitchUpdateEnabled, позволяющий включать и отключать отслеживание высоты звука. (Ie9e86)
  • Удалена допустимость значения NULL для pitchLimits, а PitchLimits.UNCONSTRAINED переименовано в PitchLimits.FullRange. (I0154f)
  • ExposedDropdownMenu теперь является функцией расширения в ExposedDropdownMenuBoxScope, а не методом класса. Возможно, вам потребуется обновить код, добавив в него новый импорт. (Ie8a65)
  • Удален устаревший класс SurfaceProtection. Используйте вместо него SpatialExternalSurfaceProtection. (Iab2c6)
  • Функция Orbiter, которая принимает OrbiterPoseProvider, больше не поддерживается. Вместо нее используется функция, которая принимает SpatialAlignment. (I4d12b)
  • Для запуска встроенных действий и управления ими в SpatialActivityPanel теперь требуется SpatialActivityPanelController (создается с помощью rememberSpatialActivityPanelController). (Id25c6)
  • Из функции rotateToLookAtUser удален параметр upDirection и добавлены параметры ограничений поворота (isYawUpdateEnabled и pitchLimits). (I1370a)

Исправление ошибок

  • Исправлены различные ошибки в InteractionPolicy. Сбой происходил, если событие ввода происходило в тот момент, когда Composable или дочерний элемент (например, Orbiter) инициировал последовательность удаления. Также исправлена ошибка, из-за которой дочерний элемент получал события наведения. (Ifc477)
  • Уменьшен размер панели в RotateToLookAtUserActivity, чтобы предотвратить обрезку на устройствах с меньшим полем зрения. (I8d672)

Известные проблемы

  • При создании большого количества панелей Compose XR в одном Activity могут возникать проблемы с отображением, которые сохраняются даже после удаления панелей.

Версия 1.0.0-alpha17

12 августа 2026 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha17" и "androidx.xr.compose:compose-testing:1.0.0-alpha17" опубликованы. Версия 1.0.0-alpha17 содержит эти коммиты.

Изменения в API

  • Удалите класс значения Meter. Он заменен на virtualPixelDensity в Scenecore. (I690ee)
  • SpatialGltfModel API теперь является экспериментальным, и для его использования необходимо дать согласие. (I4557e)
  • Добавлена возможность задавать значение null для свойства resizable в system (Ib0093).
  • Density в SubspaceSemanticsInfo для тестирования. (I2e826)
  • Переименовать вариант по умолчанию ResizePolicy в system и добавить новый вариант Default без параметров (Ic8b16)
  • Отметить FollowTarget как экспериментальный. Теперь весь API FollowingSubspace является экспериментальным. (Id4ee3)
  • Удалены API GltfAnimation (Ic2894).
  • Параметризованный метод MovePolicy.default() переименован в MovePolicy.system(). Добавлено свойство val MovePolicy.Default, которое представляет стандартное поведение движения по умолчанию. (Iedcc9)
  • Расширение требований к согласию на ExperimentalMoveAnchorPolicy для PlaneSemantic и PlaneOrientation (Ief927)
  • Удалить resetMins с сайта VolumeConstraints.offset (Ib2f2f)
  • Прекращена поддержка удаленной функции SceneCoreEntitySizeAdapter. (Ib6722)
  • Удалена устаревшая перегрузка Subspace; вместо нее используется перегрузка allowUnboundedSubspace. (I8e97f)
  • Удалена устаревшая перегрузка модификатора семантики. (I4ac10)

Исправление ошибок

  • Исправлена ошибка, из-за которой дочерние элементы Composable с прикрепленным InteractionPolicy запускали события ввода (Icdba6).

Версия 1.0.0-alpha16

15 июля 2026 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha16" и "androidx.xr.compose:compose-testing:1.0.0-alpha16" опубликованы. Версия 1.0.0-alpha16 содержит эти коммиты.

Изменения в API

  • Удаление API ComponentOverride (I820c4)
  • API GltfAnimation и SpatialGltfModelAnimation помечены как экспериментальные. Некоторые свойства были преобразованы в геттеры. (I8d689, b/524771027)
  • Исправлена общая плотность за счет установления постоянного преобразования между метрами и пикселями. Класс Meter.kt больше не поддерживается. Вместо него можно использовать Session.scene.virtualPixelDensity. (I122ff, b/430097855, b/474168798)
  • Обновлен модификатор resizable, чтобы использовать ResizePolicy вместо двух модификаторов (I7fb0f, b/496257436, b/519672992).
  • В SubspaceAssertions.kt добавлен параметр tolerance: Dp = Dp(0.5f) для всех общедоступных утверждений о равенстве размеров и позиций с записью с плавающей запятой. Поведение по умолчанию (0.5.dp) полностью задокументировано. (I266cb, b/521491915)
  • Добавлена перегрузка movable с параметром movePolicy, а transformingMovable и movable объявлены устаревшими (Ic88c1, b/481781189).
  • Добавлены новые неинтерактивные варианты стандартного элемента списка и элемента сегментированного списка, которые соответствуют спецификациям Material Expressive. Версия без выразительности больше не поддерживается. (Ide4de, b/491994186)
  • Для Subspace параметр allowUnboundedSubspace больше не поддерживается и скрыт. Чтобы получить неограниченное поведение, используйте SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity) в модификаторе Subspace. Из функции FollowingSubspace был удален параметр allowUnboundedSubspace. (Ia72ae, b/433624021)
  • Функция Session.create преобразована в функцию приостановки. (I5d27f)
  • Добавлен класс SubspaceModifier.spatializedAudioOutput, который позволяет воспроизводить пространственное звучание через ExoPlayer или SoundEffectPlayer (I46697, b/489421980, b/497867019).
  • Обновлены ComponentActivity.requestHomeSpace() и requestFullSpace(), чтобы возвращать SpaceRequestResult для проверки статуса. (If1672)
  • AnchorEntity переименован в AnchorSpace (Ifa95e, b/513619219).
  • Метод fromResource из SpatialGltfModelSource без ограничений (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)
  • Метод position переименован в align в SpatialAlignment. Отдельные методы смещения по направлениям удалены в пользу унифицированного API align. (I9bdb2, b/479805937)
  • Удалены устаревшие API режима чат-группы из SpatialConfiguration. (I1ef5c, b/458712461)
  • Добавлена функция SubspaceSemanticsConfiguration. Это конфигурация семантических свойств для пространственного узла. Этот класс безопасно предоставляет методы запросов для 3D-семантики, не раскрывая внешним потребителям базовые возможности 2D-семантики. (Id025e, b/460427288)
  • Добавлен класс SubspaceSemanticsPropertyReceiver – специальная оболочка, которая ограничивает свойства контейнера 3D-макета допустимыми полями (изначально testTag и contentDescription). (I5cf5c, b/460427288)

Исправление ошибок

  • Обновлен семантический модификатор hasContentDescription, чтобы по умолчанию выполнялось сопоставление подстрок. (I08214)
  • Добавлен ограниченный режим FollowBehavior.ExponentialDecay(), который обеспечивает мягкое следование за объектом на основе физики упругости. (I7449c, b/485639909, b/500493335)

Это затронет большинство API. В частности, LocalSession CompositionLocal и все CompositionLocals, зависящие от LocalSession (например, LocalSpatialConfiguration, LocalSpatialCapabilities и т. д.), теперь будут разрешаться в null или его версии, не предназначенные для XR, до инициализации Session.

Когда Session станет доступен, будет запущена рекомпозиция с правильным состоянием. (I0cfa4, b/514712835, b/514712835)

  • Уточнены сведения о приостановке, отмене и параллельном выполнении в документации по ComponentActivity.requestHomeSpace и ComponentActivity.requestFullSpace. Обновлены тесты для проверки распространения CancellationException. (I22f75, b/493289528)

Версия 1.0.0-alpha15

17 июня 2026 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha15" и "androidx.xr.compose:compose-testing:1.0.0-alpha15" опубликованы. Версия 1.0.0-alpha15 содержит эти коммиты.

Изменения в API

  • Прекращена поддержка ResizePolicy и старого модификатора resizable. Вместо них используется новая перегрузка SubspaceModifier.resizable и SubspaceModifier.transformingResizable. (I9e4bc)
  • Обновлены API SpatialGltfModel: добавлена поддержка загрузки моделей из ресурсов через SpatialGltfModelSource.fromResource. Параметр speed переименован в playbackSpeed в SpatialGltfModelAnimation, а также добавлен метод resume(). SpatialGltfModelStatus.Loaded и Loading теперь являются объектами. (I523de)
  • rotateToLookAtUser помечен как экспериментальный API. (I86c16)
  • Защищенная переменная targetCurrentPose перемещена и переименована в локальную переменную currentTargetPoseMeter. (Ia557c)
  • Обновлены kdocs SpatialPanel и SpatialExternalSurface, чтобы включить информацию о том, где объект отображается в пределах размера макета (I72104).
  • Логика загрузки SpatialGltfModel инкапсулирована в SpatialGltfModelState. Уточнено поведение при сбое. (Ibe98b)
  • Уточнено описание depth в SubspaceModifer.size kdocs (I0f84f).

Версия 1.0.0-alpha14

19 мая 2026 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha14" и "androidx.xr.compose:compose-testing:1.0.0-alpha14" опубликованы. Версия 1.0.0-alpha14 содержит эти коммиты.

Изменения в API

  • Добавлен метод transformingMovable для перемещения 3D-объектов по умолчанию и новая перегрузка метода movable для обработки пользовательских перемещений. (I50960)
  • Поле "SpatialGltfModel.fromData()" удалено. (I4d083)
  • Добавлен новый интерфейс узла модификатора SubspaceMeasuredSizeAwareModifierNode, который предоставляет обратный вызов onRemeasured после прохода измерения. SubspaceLayoutAwareModifierNode теперь расширяет этот новый интерфейс. Модификатор onSizeChanged теперь использует onRemeasured, чтобы обратный вызов запускался сразу после измерения, а не после размещения. (Iafbae)
  • Обновлен InteractionPolicy до Interface (I0ff30)
  • Версия Compose compileSdk обновлена до API 37. Это значит, что для использования Compose требуется AGP версии 9.2.0 или более поздней. (Id45cd)
  • Обновлены документы Sizekdocs (Iefa9a).

Версия 1.0.0-alpha13

6 мая 2026 г.

Данные "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 и следить за изменениями в будущих выпусках.
  • Если вы используете SceneCoreEntity для отрисовки glTF, убедитесь, что вы передаете session.scene.activitySpace в параметр parent вызова GltfModel.create.
  • Добавлен API SpatialGltfModel, позволяющий разработчикам добавлять файлы Gltf в приложения Compose для XR. Разработчики также могут запрашивать анимации и узлы в своих моделях Gltf. (I8b542, b/495422586)
  • SceneCoreEntitySizeAdapter теперь является интерфейсом, а не классом (I5a784, b/475292310).
  • Название "SurfaceProtection" изменено на "SpatialExternalSurfaceProtection". Обновлена документация SpatialExternalSurface (Ifad0a, b/485231082).
  • Прекращена поддержка currentWindowAdaptiveInfo и представлена его вторая версия (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).
  • API SpatialGltfModel помечен как ограниченный для этого выпуска, пока не будет проведено дополнительное тестирование. (Ibf003, b/466090694)
  • DeviceTrackingMode.LAST_KNOWN переименован в SPATIAL_LAST_KNOWN (с устаревшим резервным вариантом), добавлен INERTIAL_LAST_KNOWN для отслеживания 3DoF, а также добавлен TRACKING_DEGRADED в TrackingState. (Ie661c, b/445466590)
  • Удаление устаревшего метода SpatialLayoutSpacer (I7b36c)
  • Удален устаревший API отступов (If1886).
  • Добавлено floatRange к значениям смещения. Удалено значение по умолчанию для LayoutDirection (I9d74e)

Исправление ошибок

  • Добавлены примеры кода и документация KDoc для SpatialColumn, SpatialRow и SpatialCurvedRow. (Iaf54f, b/495777633)

Версия 1.0.0-alpha12

25 марта 2026 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha12" и "androidx.xr.compose:compose-testing:1.0.0-alpha12" опубликованы. Версия 1.0.0-alpha12 содержит эти коммиты.

Изменения в API

  • Добавьте API SpatialGltfModel и SpatialGltfModelAnimation, чтобы отрисовывать glTF и управлять анимацией. Значение SpatialGltfModelState изменено на AutoCloseable. Теперь его нужно закрыть, чтобы освободить ресурсы. (I11fde, b/466065486, b/481379924). Однако в этом выпуске API SpatialGltfModel помечен как ограниченный, поскольку требуется дополнительное тестирование. (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

25 февраля 2026 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha11" и "androidx.xr.compose:compose-testing:1.0.0-alpha11" опубликованы. Версия 1.0.0-alpha11 содержит эти коммиты.

Новые функции

  • Добавление параметра SuperSampling в SpatialExternalSurfaces (Icd4d1)

Известные проблемы

  • Проблема с SurfaceEntity в SceneCore может привести к сбою приложений при создании экземпляров SpatialExternalSurface. Проблема устранена в версиях androidx.xr.scenecore:scenecore-*:1.0.0-alpha13, androidx.xr.compose:compose:1.0.0-alpha12 и более поздних. Обновите затронутые приложения до последних версий.

Изменения в API

  • Изменения отступов модификатора подпространства для учета направления макета. (I53e25)
  • SpatialCapabilities is now sealed and cannot be extended. (I07aef)
  • API SpatialRow и SpatialColumn, которые принимают общий параметр SpatialAlignment, больше не поддерживаются. Вместо них используйте API, которые принимают verticalAlignment или horizontalAlignment для SpatialRow и SpatialColumn соответственно. (Iec390)
  • Объединение API перегруженных функций SubspaceLayout (Idd30a)
  • SubspaceModifier.lookAtUser переименован в rotateToLookAtUser, а параметр up – в upDirection. (Icafb8)
  • Преобразование SpatialRow во встроенную функцию (Ia2f20)
  • Преобразование SpatialColumn во встроенную функцию (I681be)
  • Удален API Billboard (Ib76cd).

Версия 1.0.0-alpha10

28 января 2026 г.

Данные "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).
  • Удаление устаревших API в SpatialAlignment. (Ib0b61, b/468011887)
  • Прекращение поддержки SpatialLayoutSpacer и запуск SpatialSpacer. (I2ebf3, b/466071383)
  • В UserSubspace API термин "ленивая блокировка" заменен на "мягкая блокировка". (I9ded1, b/464035984)

Версия 1.0.0-alpha09

3 декабря 2025 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha09" и "androidx.xr.compose:compose-testing:1.0.0-alpha09" опубликованы. Версия 1.0.0-alpha09 содержит эти коммиты.

Изменения в API

  • Добавление модификаторов LookAtUser и Billboard, которые позволяют контенту всегда быть обращенным к пользователю. (I49b99)
  • Добавляет возможность задавать InteractionPolicy для SpatialExternalSurfaces и SpatialPanels, позволяя обнаруживать клики и другие события ввода в 3D. (Iae155)
  • Добавлена перегрузка модификатора size и requiredSize с шириной, высотой и глубиной в виде значений Dp. (I92f79)
  • Интерфейс ParentLayoutParamsModifier теперь расширяет DelegatableSubspaceNode. (I1a6d4)
  • ApplicationSubspace больше не поддерживается. Вместо него используйте Subspace API.
    • Поведение Subspace API изменено: теперь он предоставляет только подпространство на уровне приложения с рекомендуемым положением и масштабом.
    • PlanarEmbeddedSubspace API позволяет встраивать подпространства в 2D-контексты. (Id3343)
  • В SubspaceModifier.Node API добавлен флаг shouldAutoInvalidate. (I93902)
  • Добавлен required(Size|Width|Depth|Height) в API, которые позволяют разработчикам ограничивать размер @SubspaceComposable определенным диапазоном, игнорируя ограничения входящих измерений родительского элемента. (Ifaa78)
  • Добавлен SubspaceModifier.onSizeChanged, который предоставляет разработчикам простой обратный вызов, когда размер @SubspaceComposable меняется. (I994f9)
  • Удален Volume API. Вместо Volume API следует использовать SceneCoreEntity API. (I4162b)
  • Разделить SubspaceLayoutModifierNode.requestRelayout на invalidateMeasurement/invalidatePlacement. (I14805)
  • Добавлен API SpatialGltfModel, который позволяет разработчикам отрисовывать glTF в Compose. (Icc91f)
  • Добавлен composable-API SpatialGltfModel для удобного рендеринга glTF-файлов (Iade67).

Исправление ошибок

  • Исправлена ошибка макета в SceneCoreEntity. Теперь ограничения должны соблюдаться. (I11bb8)
  • Понижение версии модулей jxr-compose до Compile sdk = 34 (I2d5db)

Версия 1.0.0-alpha08

22 октября 2025 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha08" и "androidx.xr.compose:compose-testing:1.0.0-alpha08" опубликованы. Версия 1.0.0-alpha08 содержит эти коммиты.

Изменения в API

  • Изменено ResizePolicy, чтобы принимать onResizeStart, onResizeUpdate и onResizeEnd. (I7e21f)

Исправление ошибок

  • Предотвращен сбой при уничтожении Activity с подпространством. (I595a1)

Версия 1.0.0-alpha07

24 сентября 2025 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha07" и "androidx.xr.compose:compose-testing:1.0.0-alpha07" опубликованы. Версия 1.0.0-alpha07 содержит эти коммиты.

Изменения в API

  • Улучшена документация KDocs для SpatialMainPanel. (I27b70, b/444467891)
  • Добавлен модификатор SpatialArrangement для упорядочивания дочерних элементов вдоль главной оси в 3D-макетах, таких как SpatialRow и SpatialColumn. Новый 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 в composable-функции Subspace и замените параметр constraints на SubspaceModifier с SubspaceModifiers, связанным с размером. Если для правила allowUnboundedSubspace задано значение True, у подпространств могут быть неограниченные ограничения. (Ib06e6, b/433331675)
  • Прекращена поддержка перемещаемых и масштабируемых элементов SubspaceModifiers, поскольку DragPolicy() и ResizePolicy() теперь являются частью API SpatialPanel и SpatialExternalSurface (I397bf, b/437924639).
  • Добавлена поддержка LayoutDirection в пространственных макетах. Теперь composable-функция, использующая SpatialAlignment, будет правильно размещать элементы в интерфейсах с письмом как слева направо, так и справа налево. (I964bb, b/436300273)
  • Добавьте параметры Resizable и Movable в API Panel, чтобы эти функции применялись только к поддерживаемым контейнерам. (Id491c)
  • Добавлены атрибуты sizeIn, widthIn, heightIn, depthIn SubspaceModifiers, которые позволяют задавать точные минимальные и максимальные ограничения для ширины, высоты и глубины. (I1af09, b/433330761)

Версия 1.0.0-alpha06

13 августа 2025 г.

Данные "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

30 июля 2025 г.

Данные "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)
  • Два новых компонента SpatialExternalSurface, представляющих сферы на 180 и 360 градусов. (I40ef2, b/391705799)
  • Добавлен метод SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147).
  • Добавлен API SceneCoreEntity, чтобы улучшить совместимость между SceneCore и Compose for XR. (I50bb3, b/423020989)
  • Добавлен API GravityAlignedsubspace для поддержки функции 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)
  • ExperimentalSubspaceVolumeApi: статус изменен с "Предупреждение" на "Ошибка", поскольку предупреждения часто игнорируются при неправильном использовании composable API. (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).
  • Класс Placeable из XR переименован в SubspacePlaceable, чтобы его можно было отличить от класса Placeable из Compose. (I74874)
  • Удаление настроек Orbiter и добавление shouldRenderInNonSpatial в качестве нового параметра. Кроме того, удален класс EdgeOffset и добавлен новый параметр orbiterOffsetType, чтобы объединить функции Orbiter(). и переименовать OrbiterEdge в ContentEdge. (Iebf3d)
  • Тип Measurable переименован в SubspaceMeasurable, чтобы его можно было отличить от типа Measurable в Compose. (I9726c)
  • Переименовать MeasureResult в SubspaceMeasureResult (I9f34d)
  • Удален API setSubspaceContent. Вместо него рекомендуется использовать setContent из Compose с composable-функцией Subspace. (Ifff4c, b/421427391, b/421427391)
  • MeasurePolicy переименован в SubspaceMeasurePolicy. (I37a9b, b/422553904)
  • Преобразуйте SubspaceSemanticsInfo в запечатанный интерфейс, так как мы не сможем добавлять участников без значений по умолчанию. (I372f9, b/423704068)
  • Обновлена документация по SpatialExternalSurface, ContentSecurityLevel переименован в SurfaceProtection (I3c460, b/420982808).
  • Добавлен перегруженный конструктор для модификатора перемещения, который позволяет выполнять привязку. (Ic0c70)
  • Добавлено больше поставщиков позиций для подсказок, чтобы разработчики могли контролировать, где размещается подсказка: сверху, снизу, слева или справа от привязки. Добавлен API, который принимает Shape для кареток, чтобы можно было использовать больше пользовательских фигур. (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)
  • Исправлена ошибка, из-за которой topBar перекрывал меню в SpatialComposeVideoPlayer (Id33bc, b/427168167).
  • Исправлена ошибка, из-за которой не отображался фиксированный радиус закругления (I975fe, b/428261830).

Версия 1.0.0-alpha04

7 мая 2025 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha04" и "androidx.xr.compose:compose-testing:1.0.0-alpha04" опубликованы. Версия 1.0.0-alpha04 содержит эти коммиты.

Новые функции

  • Добавлен интерфейс CompositionLocalConsumerSubspaceModifierNode, позволяющий пользовательским типам SubspaceModifier получать доступ к локальным значениям композиции.
  • Добавлен новый API SpatialPanel, который соответствует стилю реализации Compose AndroidView и заменяет предыдущий API ViewBased SpatialPanel.
  • Добавлен сопутствующий объект VolumeConstraints.Unbounded, представляющий неограниченные ограничения.
  • Добавлено поле SubspaceModifier.onPointSourceParams, позволяющее указать источник пространственного звука.
  • Добавлен общедоступный класс ApplicationSubspace, который предлагает необязательный класс VolumeConstraints для определения трехмерной области, в которой приложение может отображать пространственный контент. По умолчанию, если ограничения не указаны, Subspace будет ограничен текущей зоной обзора SpatialUser по ширине и высоте. Пользователи могут задать ограничения, которые будут использоваться, если зону обзора определить не удается. В противном случае используются значения ширины и высоты зоны обзора по умолчанию.
  • Добавлен класс SpatialExternalSurface, который можно использовать для отрисовки стереоскопического контента. SpatialExternalSurface можно настраивать с помощью модификаторов (кроме альфа-канала) и эффекта растушевки краев.
  • Добавлен новый модификатор подпространства pointerHoverIcon, который позволяет пользователям устанавливать значок для пространственного указателя.

Изменения в API

  • Удалено ограничение RequiresApi(34) для всех пакетов Jetpack XR. Это ограничение было избыточным, поскольку Jetpack XR сейчас доступен только на устройствах с уровнем API 34 и выше (Iae0f8).
  • Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии. (Idb6b5)
  • Теперь обработка возврата будет работать на пространственных панелях без встроенных действий. Чтобы обработка кнопки "Назад" работала, укажите android:enableOnBackInvokedCallback="true" в манифесте Android.
  • Теперь в пространственных диалоговых окнах работает обработка кнопки "Назад". Чтобы обработка кнопки "Назад" работала, укажите android:enableOnBackInvokedCallback="true" в манифесте Android.
  • Размер SpatialPanel на основе Compose и View теперь может определяться их содержимым.
  • Теперь разработчики могут задавать собственные значения SpatialElevationLevel, а не только использовать стандартные уровни.
  • Теперь высоту орбиты можно настраивать с помощью параметра elevation.
  • Теперь подпространство по умолчанию может быть ограничено по ширине и высоте зоной обзора SpatialUser. Если определить зону обзора не удается, используются значения ширины и высоты по умолчанию.
  • В модификатор Movable добавлены новые обратные вызовы onMoveStart и onMoveEnd. Обратные вызовы onMoveStart и onMoveEnd выполняются, когда пользователь начинает и заканчивает перемещать composable-функцию подпространства с модификатором movable.
  • Из пространственных API, таких как SpatialRow и SpatialPanel, был удален параметр name. Для отладки деревьев пространственной компоновки используйте SubspaceModifier.testTag.
  • Удалена неподдерживаемая перегрузка SpatialPopup, которая содержит только spatialElevationLevel и content. Используйте интерфейс, поддерживающий onDimissRequest.
  • Обратный вызов onPoseChange из модификатора Movable был удален. Используйте вместо него onMove.
  • SubspaceModifiers перестанет действовать, если вы отсоедините его или уже начали это делать.
  • Существующий API SpatialRow был разделен на SpatialRow и SpatialCurvedRow. Если вы ранее использовали параметр curveRadius в SpatialRow, теперь используйте SpatialCurvedRow, который работает так же.
  • В MainPanel и ActivityPanel больше нет строк заголовка, если они запущены на образе системы аналогичной версии.
  • Модификаторы прозрачности и масштаба теперь можно комбинировать. Их значения будут умножаться, чтобы получить итоговое значение прозрачности или масштаба.
  • Обратный вызов onPoseChange из модификатора Movable оптимизирован, чтобы движение позы было более плавным.
  • Модификаторы movable и resizable теперь будут выполнять обратные вызовы в основном потоке, чтобы изменения состояния запускали рекомпозицию.
  • Добавлено отслеживание состояния на этапах макета и измерения, чтобы изменения состояния в SubspaceLayout запускали повторную компоновку.
  • Оптимизирована цепочка модификаторов, чтобы лучше использовать существующие модификаторы.

Исправление ошибок

  • Затемнение экрана больше не применяется, когда показывается SpatialDialog. (Ic4594)
  • Запросы на изменение макета, сделанные, когда узлы модификатора отсоединены, теперь будут игнорироваться.
  • Удалены фазы изменения макета, запускаемые модификаторами Movable и Resizable.
  • Исправлен сбой в composable-функции MainPanel(), который происходил, когда один из размеров был равен нулю (напрямую или в результате вычисления макета, например SpatialRow/SpatialColumn). Теперь панель будет скрыта. Обратите внимание, что это исправление устраняет сбои, возникающие на этапе компоновки. Уменьшение размера панели до нуля в результате действий пользователя будет обрабатываться отдельно. На скрытой панели нет элементов интерфейса.
  • Исправлена проблема с maintainAspectRatio из модификатора resizable. Соотношение сторон должно сохраняться.
  • Исправлена ошибка, из-за которой вложенные подпространства неправильно позиционировались для одного кадра.
  • Исправлена ошибка, из-за которой скругленные углы иногда не применялись, когда должны были.
  • NestedSubspaces больше не будет появляться в неправильном месте на один кадр.

Версия 1.0.0-alpha03

26 февраля 2025 г.

Версии 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

12 февраля 2025 г.

Данные "androidx.xr.compose:compose:1.0.0-alpha02" и "androidx.xr.compose:compose-testing:1.0.0-alpha02" опубликованы. Версия 1.0.0-alpha02 содержит эти коммиты.

Новые функции

  • Теперь панель действий может затемнять свое содержимое, когда активировано пространственное диалоговое окно.
  • API Orbiter теперь можно использовать в контекстах SubspaceComposable. Он будет прикреплять орбитеры к ближайшему родительскому элементу на основе SubspaceLayout.
  • Добавлен параметр LayoutCoordinatesAwareModifierNode, позволяющий использовать модификаторы на основе позиционирования.
  • В SubspaceModifier.Node добавлены методы жизненного цикла attach/detach.
  • Добавлен модификатор scaleWithDistance для перемещаемых объектов. Если включен параметр scaleWithDistance, перемещенный элемент подпространства будет увеличиваться или уменьшаться. Кроме того, у него сохранится масштаб, который был до перемещения.

Изменения в API

  • Удален параметр SessionCallbackProvider. Вместо него используется SpatialCapabilities.

Другие изменения

  • Значение minSDK уменьшено до 24. Для всех API Jetpack XR по-прежнему требуется API 34 во время выполнения.
  • Конструкторы Orbiter EdgeOffset.inner, EdgeOffset.outer и EdgeOffset.overlap больше не являются методами @Composable, что позволяет использовать их в контекстах, не связанных с composable-функциями.
  • Обновите уровни пространственного возвышения в соответствии с последней спецификацией UX.
  • Реализуйте интерфейс SubspaceSemanticsInfo в MeasurableLayout.
  • Название "SubspaceModifierElement" изменено на "SubspaceModifierNodeElement".

Исправление ошибок

  • Исправлены ошибки, связанные со стабильностью заказа SubspaceModifier. SubspaceModifier должен работать надежнее. Модификаторы смещения, поворота, масштабирования, перемещения и изменения размера теперь можно использовать в любом порядке.

Версия 1.0.0-alpha01

12 декабря 2024 г.

Выпущены данные "androidx.xr.compose:compose-*1.0.0-alpha01".

Функции в первой версии

  • Первый выпуск Jetpack Compose для XR для разработчиков. Используйте знакомые концепции Compose, такие как строки и столбцы, чтобы создавать макеты пользовательского интерфейса в XR, независимо от того, переносите ли вы существующее 2D-приложение в XR или создаете новое приложение XR с нуля. Эта библиотека предоставляет подпространственные и пространственные составные элементы, такие как пространственные панели и орбитеры, которые позволяют размещать существующий пользовательский интерфейс на основе 2D Compose или Views в пространственном макете. В нем представлена composable-функция Volume, которая позволяет размещать объекты SceneCore, например 3D-модели, относительно интерфейса. Подробную информацию вы найдете в руководстве для разработчиков.

    • Subspace. Эту composable-функцию можно разместить в любом месте иерархии интерфейса приложения, чтобы поддерживать макеты для 2D и пространственного интерфейса, не теряя контекст между файлами. Это упрощает обмен данными, например существующей архитектурой приложения, между XR и другими форм-факторами без необходимости поднимать состояние по всему дереву пользовательского интерфейса или перестраивать архитектуру приложения.

    • SpatialPanel. Пространственная панель – это composable-функция подпространства, которая позволяет показывать контент приложения, например воспроизводить видео, показывать изображения и т. д.

    • Орбитер. Пространственный компонент интерфейса. Она прикрепляется к соответствующей пространственной панели и содержит элементы навигации и контекстных действий, связанных с этой панелью. Например, если вы создали пространственную панель для показа видеоконтента, вы можете добавить элементы управления воспроизведением видео в орбитер.

    • Объем. Размещайте объекты SceneCore, например 3D-модели, относительно интерфейса.

  • Пространственный макет. Вы можете создать несколько пространственных панелей и разместить их в пространственном макете с помощью SpatialRow, SpatialColumn, SpatialBox и SpatialLayoutSpacer. Используйте SubspaceModifier, чтобы настроить макет.

  • Пространственные компоненты интерфейса. Эти элементы можно повторно использовать в 2D-интерфейсе, а их пространственные атрибуты будут видны только при включении пространственных возможностей.

    • SpatialDialog – панель немного сдвинется назад по оси Z, чтобы показать диалоговое окно.
    • SpatialPopUp Панель немного сдвинется назад по оси Z, чтобы показать всплывающее окно.
    • SpatialElevation. С помощью SpatialElevationLevel можно задать высоту.
  • SpatialCapabilities. Пространственные возможности могут меняться, когда пользователи взаимодействуют с вашим приложением или системой, или даже могут быть изменены самим приложением, например при переходе в главное или полное пространство. Чтобы избежать проблем, приложение должно проверять LocalSpatialCapabilities.current, чтобы определить, какие API поддерживаются в текущей среде. isSpatialUiEnabled Пространственные элементы интерфейса (например, SpatialPanel). isContent3dEnabled 3D-объекты. isAppEnvironmentEnabled Окружение. isPassthroughControlEnabled Может ли приложение управлять сквозным режимом. isSpatialAudioEnabled Пространственный звук.

Известные проблемы

  • В настоящее время для использования Jetpack Compose для XR требуется minSDK версии 30. В качестве временного решения вы можете добавить в манифест запись <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>, чтобы иметь возможность создавать и запускать приложения с minSDK 23.
  • В настоящее время для приложений Jetpack XR требуется запрашивать разрешение android.permission.SCENE_UNDERSTANDING в AndroidManifest.
  • Когда приложение запускается сразу в полном пространстве с помощью свойства PROPERTY_XR_ACTIVITY_START_MODE в манифесте, действия и приложения сначала открываются в домашнем пространстве, а затем переходят в полное.
  • Файлы glTF в Volume Composables могут сначала мерцать в неправильном месте.
  • Если использовать SpatialDialog на панели, которая была значительно перемещена, контент будет сдвинут в неправильном направлении.