Jetpack Compose для 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) SpatialGltfModelAPI теперь является экспериментальным, и для его использования необходимо дать согласие. (I4557e)- Добавлена возможность задавать значение null для свойства resizable в
system(Ib0093). DensityвSubspaceSemanticsInfoдля тестирования. (I2e826)- Переименовать вариант по умолчанию
ResizePolicyвsystemи добавить новый вариантDefaultбез параметров (Ic8b16) - Отметить
FollowTargetкак экспериментальный. Теперь весь APIFollowingSubspaceявляется экспериментальным. (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. Отдельные методы смещения по направлениям удалены в пользу унифицированного APIalign. (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.sizekdocs (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). Однако в этом выпуске APISpatialGltfModelпомечен как ограниченный, поскольку требуется дополнительное тестирование. (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)
SpatialCapabilitiesis 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) - В
UserSubspaceAPI термин "ленивая блокировка" заменен на "мягкая блокировка". (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 изменено: теперь он предоставляет только подпространство на уровне приложения с рекомендуемым положением и масштабом.
PlanarEmbeddedSubspaceAPI позволяет встраивать подпространства в 2D-контексты. (Id3343)
- В
SubspaceModifier.NodeAPI добавлен флагshouldAutoInvalidate. (I93902) - Добавлен
required(Size|Width|Depth|Height)в API, которые позволяют разработчикам ограничивать размер@SubspaceComposableопределенным диапазоном, игнорируя ограничения входящих измерений родительского элемента. (Ifaa78) - Добавлен
SubspaceModifier.onSizeChanged, который предоставляет разработчикам простой обратный вызов, когда размер@SubspaceComposableменяется. (I994f9) - Удален Volume API. Вместо Volume API следует использовать
SceneCoreEntityAPI. (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, чтобы повысить типобезопасность и удобство использования интерфейсов расширений, например:CompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(внутреннее изменение) (Iede00, b/440599394, b/440599394)
- Снятие ограничений с
SpatialExternalSurface(I33315, b/439646773) - Добавьте
SubspaceModifierв composable-функции Subspace и замените параметр constraints наSubspaceModifierсSubspaceModifiers, связанным с размером. Если для правилаallowUnboundedSubspaceзадано значение True, у подпространств могут быть неограниченные ограничения. (Ib06e6, b/433331675) - Прекращена поддержка перемещаемых и масштабируемых элементов
SubspaceModifiers, посколькуDragPolicy()иResizePolicy()теперь являются частью APISpatialPanelиSpatialExternalSurface(I397bf, b/437924639). - Добавлена поддержка
LayoutDirectionв пространственных макетах. Теперь composable-функция, использующаяSpatialAlignment, будет правильно размещать элементы в интерфейсах с письмом как слева направо, так и справа налево. (I964bb, b/436300273) - Добавьте параметры Resizable и Movable в API
Panel, чтобы эти функции применялись только к поддерживаемым контейнерам. (Id491c) - Добавлены атрибуты
sizeIn,widthIn,heightIn,depthInSubspaceModifiers, которые позволяют задавать точные минимальные и максимальные ограничения для ширины, высоты и глубины. (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)
- Удален
PublishedApiCoreEntity(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, который соответствует стилю реализации ComposeAndroidViewи заменяет предыдущий APIViewBased 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 во время выполнения. - Конструкторы
OrbiterEdgeOffset.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).isContent3dEnabled3D-объекты.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 на панели, которая была значительно перемещена, контент будет сдвинут в неправильном направлении.