Jetpack Compose para XR
| Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
|---|---|---|---|---|
| 21 de octubre de 2026 | - | - | 1.0.0-beta02 | - |
Cómo declarar dependencias
Para agregar una dependencia en XR Compose, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.
Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta02" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta02" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta02") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta02") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
Comentarios
Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
Consulta la documentación sobre la herramienta Issue Tracker para obtener más información.
Versión 1.0
Versión 1.0.0-beta02
21 de octubre de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-beta02 y androidx.xr.compose:compose-testing:1.0.0-beta02. La versión 1.0.0-beta02 incluye estas confirmaciones.
Cambios en la API
- Las bibliotecas ahora se orientan a Kotlin 2.2 y requieren kotlinc 2.2 (I82396, b/498369605)
- Se cambió el nombre del parámetro
halfLifeMsdeFollowMode.soft()ahalfLifeMillis. (I39187) - Se convirtió
PitchLimitsen un@JvmInline value classque empaqueta dos números de punto flotante en unLongpara eliminar las asignaciones de objetos. (Id43c3). - Se agregaron parámetros nuevos para
FollowMode.soft:halfLifeMs,startDelayystartThresholds. Se quitó el parámetrodurationMs, ya que no es necesario, dado que pasamos de un algoritmosmoothStepa un algoritmoexponentialDecay. (If0140). - Se quitó la sobrecarga obsoleta de
SpatialActivityPanel. En su lugar, usa la sobrecarga deSpatialActivityPanelque acepta unSpatialActivityPanelController. (I5abc3). - Habilita las transiciones entre el contenido de Composable en 3D y 2D dentro de una actividad en
FullSpaceMode. Este cambio está restringido porSpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237) - Se expuso la sobrecarga experimental de
Subspaceque toma un parámetroFollowTargetpara admitir el contenido siguiente. (Iec1a9) - Se quitaron los modificadores móviles obsoletos. En su lugar, usa el nuevo modificador movable que acepta el nuevo
MovePolicycomo parámetro. (Ib135d) - Se quitó
DragPolicy, que estaba obsoleto. UsaSubspaceModifier.movable()en su lugar. (I108d4) - Se dieron de baja las sobrecargas sin estado de
SlideryRangeSlideren favor de sus versiones con estado. Se cambió el nombre deactiveRangeStartyactiveRangeEndenRangeSliderStateastartValueyendValue, y se dieron de baja las APIs de Slider experimentales y no promocionadas más antiguas conDeprecationLevel.HIDDEN. (If8995)
Correcciones de errores
- Se corrigió
RotateToLookAtUsercon la introducción deposeInActivitySpacepara garantizar el cálculo correcto de la pose para todos los tipos de subespacios, incluidos los adjuntos a anclas o usuarios.Ica367b - Se corrigió la falla de restricciones que se producía cuando Orbiter se conectaba a paneles grandes (I8c4bf).
- Se corrigió un error en
SubspaceLayoutNodepor el queremoveAll()causaba asignaciones deArrayListinnecesarias. También se corrigió el rendimiento del cálculo de profundidad. I34a10a - Se actualizó la dependencia
androidx.lifecycle:lifecycle-runtimea la versión 2.10.0. Esta versión es necesaria para que las verificaciones de lint del entorno de ejecución del ciclo de vida empaquetado se ejecuten con la versión 9.5.0-alpha04 o posterior del AGP. (I99bfd, b/556807521) - Se mejoraron los kdocs relacionados con
AudioOutputProviderpara destacar que no se debe volver a usar con varias instancias deExoPlayer(I6b18e). - Se corrigieron problemas menores de ortografía y gramática de kdoc (Id3ba6).
Errores conocidos
- Esta versión de
androidx.xr.composetiene una dependencia deandroidx.xr.scenecore:1.0.0-rc01, que tiene una fuga de memoria conocida. En tu configuración de compilación, puedes anular de forma explícita la dependenciaSceneCorea la versión1.0.0, que incluye una corrección para la fuga de memoria.
Versión 1.0.0-beta01
23 de septiembre de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-beta01 y androidx.xr.compose:compose-testing:1.0.0-beta01. La versión 1.0.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se quitó
DragPolicy, que ya no se usa. UsaSubspaceModifier.movable()en su lugar. (I108d4) - Se quitó el
ResizePolicyobsoleto y sus usos enSpatialPanelySpatialExternalSurface. Se quitó una funciónSubspaceModifier.resizableobsoleta. En su lugar, usa el nuevoSubspaceModifier.resizablecon un nuevoResizePolicy. (I59e6b) - Se agregó el parámetro
isPitchUpdateEnabledpara permitir habilitar o inhabilitar el seguimiento de tono de forma independiente. (Ie9e86) - Se quitó la nulabilidad de
pitchLimitsy se cambió el nombre dePitchLimits.UNCONSTRAINEDaPitchLimits.FullRange. (I0154f). ExposedDropdownMenuahora es una función de extensión enExposedDropdownMenuBoxScopeen lugar de un miembro. Es posible que debas actualizar tu código con una importación nueva. (Ie8a65).- Se quitó la clase obsoleta
SurfaceProtection. UsaSpatialExternalSurfaceProtectionen su lugar. (Iab2c6) - La función Orbiter que toma un
OrbiterPoseProviderdejó de estar disponible y se reemplazó por la que usaSpatialAlignment. (I4d12b) SpatialActivityPanelahora requiere unSpatialActivityPanelController(con una instancia creada conrememberSpatialActivityPanelController) para iniciar y administrar actividades incorporadas. (Id25c6).- Se quitó el parámetro
upDirectionderotateToLookAtUsery se agregaron parámetros de restricciones de rotación (isYawUpdateEnabledypitchLimits). (I1370a)
Correcciones de errores
- Se corrigieron varios problemas de
InteractionPolicy. Se producía una falla si se generaba un evento de entrada justo cuando el elemento componible o secundario (por ejemplo, un Orbiter) iniciaba una secuencia de eliminación. También se solucionó un problema por el que un elemento secundario recibía eventos de desplazamiento. (Ifc477) - Se redujo el tamaño del panel en
RotateToLookAtUserActivitypara evitar el recorte en dispositivos con un campo de visión más pequeño. (I8d672).
Errores conocidos
- Hay un problema con los paneles de Compose XR en el que la creación de muchos paneles en una sola actividad puede causar daños en lo que se ve, incluso después de que se destruyen los paneles.
Versión 1.0.0-alpha17
12 de agosto de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha17 y androidx.xr.compose:compose-testing:1.0.0-alpha17. La versión 1.0.0-alpha17 incluye estas confirmaciones.
Cambios en la API
- Quita la clase de valor
Meter, que se reemplaza porvirtualPixelDensityenScenecore. (I690ee) - La API de
SpatialGltfModelahora es experimental y se debe habilitar para su uso. (I4557e). - Se hizo que
systemsea anulable y se pueda cambiar de tamaño (Ib0093). - Se expuso
DensityenSubspaceSemanticsInfopara realizar pruebas. (I2e826) - Se cambió el nombre de la opción predeterminada
ResizePolicyasystemy se agregó una nueva opciónDefaultsin parámetros (Ic8b16). - Se marcó
FollowTargetcomo experimental. Toda la API deFollowingSubspaceahora es experimental. (Id4ee3) - Se quitaron las APIs de
GltfAnimation(Ic2894). - Se cambió el nombre del método
MovePolicy.default()con parámetros aMovePolicy.system(). Se introdujo una propiedadval MovePolicy.Defaultpara representar el comportamiento de movimiento predeterminado estándar. (Iedcc9) - Se expandieron los requisitos de habilitación de
ExperimentalMoveAnchorPolicyaPlaneSemanticyPlaneOrientation(Ief927). - Se quitó
resetMinsdeVolumeConstraints.offset(Ib2f2f). - Se quitó la función
SceneCoreEntitySizeAdapterobsoleta. (Ib6722). - Se quitó la sobrecarga obsoleta de
SubspaceconallowUnboundedSubspace. (I8e97f). - Se quitó la sobrecarga del modificador de semántica obsoleta. (I4ac10)
Correcciones de errores
- Se corrigió un problema por el que los elementos secundarios de un
Composablecon unInteractionPolicyadjunto activaban eventos de entrada (Icdba6).
Versión 1.0.0-alpha16
15 de julio de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha16 y androidx.xr.compose:compose-testing:1.0.0-alpha16. La versión 1.0.0-alpha16 incluye estas confirmaciones.
Cambios en la API
- Se quitaron las APIs de
ComponentOverride(I820c4). - Las APIs de
GltfAnimationySpatialGltfModelAnimationse marcaron como experimentales. Algunas propiedades se convirtieron en métodos get. (I8d689, b/524771027) - Se corrigió el comportamiento de la densidad general estableciendo que la conversión entre metros y píxeles sea constante. Se dio de baja Meter.kt, por lo que ahora se puede usar
Session.scene.virtualPixelDensitycomo alternativa. (I122ff, b/430097855, b/474168798) - Se actualizó el modificador de cambio de tamaño para usar un
ResizePolicyen lugar de dos modificadores (I7fb0f, b/496257436, b/519672992). - Se agregó un parámetro de tolerancia
Dp = Dp(0.5f)a todas las aserciones de igualdad de posición y dimensión de punto flotante públicas enSubspaceAssertions.kt. El comportamiento de tolerancia predeterminado (0.5.dp) está completamente documentado. (I266cb, b/521491915) - Se agregó una sobrecarga móvil con el parámetro
movePolicyy se marcaron como obsoletostransformingMovableymovable(Ic88c1, b/481781189). - Se agregaron nuevas variantes no interactivas de elementos de lista estándar y elementos de lista segmentados que siguen las especificaciones de Material Expressive. La versión no expresiva dejó de estar disponible. (Ide4de, b/491994186)
- En Subspace, el parámetro
allowUnboundedSubspaceahora está obsoleto y oculto. Ahora, el comportamiento sin límites se debe lograr usandoSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) en el modificador Subspace. Se quitó el parámetroallowUnboundedSubspacedeFollowingSubspace. (Ia72ae, b/433624021) - Se convirtió
Session.createen una función de suspensión. (I5d27f). - Se agregó
SubspaceModifier.spatializedAudioOutput, que permite espacializar la reproducción de audio a través deExoPlayero de unSoundEffectPlayer(I46697, b/489421980, b/497867019). - Se actualizaron
ComponentActivity.requestHomeSpace()yrequestFullSpace()para que devuelvanSpaceRequestResultpara la verificación de estado. (If1672). - Se actualizó
AnchorEntitypara que se llameAnchorSpace(Ifa95e, b/513619219). - Se quitó la restricción del método
fromResourcedeSpatialGltfModelSource(I1f5a1, b/503047416). - Los miembros de
SubspaceSemanticsMatcherson públicos: la propiedaddescription, los métodos de fábrica complementarios (expectValue,keyIsDefined,keyNotDefined), las funciones de miembro (matches,matchesAny) y los operadores (and,or,not). (I972a4, b/460427288) - Se actualizaron
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfoySubspaceSemanticsModifierNodepara usar tipos de semántica espacial seleccionados. (I80dea, b/460427288) - Se cambió el nombre de
positionaalignenSpatialAlignmenty se quitaron los métodos de desplazamiento direccional individuales para priorizar una API dealignunificada. (I9bdb2, b/479805937) - Se quitaron las APIs obsoletas de Space Mode de
SpatialConfiguration. (I1ef5c, b/458712461) - Se introdujo
SubspaceSemanticsConfiguration. Esta es una configuración de propiedades de semántica para un nodo Spatial. Esta clase expone de forma segura métodos de consulta para la semántica 3D sin filtrar las capacidades semánticas 2D fundamentales a los consumidores externos. (Id025e, b/460427288) - Se introdujo
SubspaceSemanticsPropertyReceiver: un wrapper dedicado que limita las propiedades del contenedor de diseño 3D a campos válidos (inicialmente,testTagycontentDescription). (I5cf5c, b/460427288)
Correcciones de errores
- Se actualizó el
hasContentDescriptiondel modificador semántico para que use la coincidencia de subcadena de forma predeterminada. (I08214) - Se agregó
FollowBehavior.ExponentialDecay()restringido, que proporciona un comportamiento de seguimiento suave guiado por la física elástica. (I7449c, b/485639909, b/500493335)
La mayoría de las APIs se verán afectadas por este cambio. Específicamente, LocalSession CompositionLocal y todos los CompositionLocals que dependen de LocalSession (p.ej., LocalSpatialConfiguration, LocalSpatialCapabilities, etc.) ahora se resolverán en null o sus versiones que no son de XR antes de que se inicialice Session.
Una vez que el Session esté disponible, se activará la recomposición con el estado correcto. (I0cfa4, b/514712835, b/514712835)
- Se aclaró la documentación de
ComponentActivity.requestHomeSpaceyComponentActivity.requestFullSpaceen relación con el comportamiento de suspensión, la cancelación y la simultaneidad. Se actualizaron las pruebas para verificar la propagación deCancellationException. (I22f75, b/493289528)
Versión 1.0.0-alpha15
17 de junio de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha15 y androidx.xr.compose:compose-testing:1.0.0-alpha15. La versión 1.0.0-alpha15 incluye estas confirmaciones.
Cambios en la API
- Se dio de baja
ResizePolicyy el modificador de cambio de tamaño anterior, y se reemplazó por una nueva sobrecarga deSubspaceModifier.resizableySubspaceModifier.transformingResizable. (I9e4bc) - Se actualizaron las APIs de
SpatialGltfModel: Se agregó compatibilidad para cargar modelos desde recursos a través deSpatialGltfModelSource.fromResource. Se cambió el nombre de speed aplaybackSpeedenSpatialGltfModelAnimationy se agregó un método resume().SpatialGltfModelStatus.Loaded y Loading ahora son objetos. (I523de) - Se marcó
rotateToLookAtUsercomo una API experimental. (I86c16). - Se movió y se cambió el nombre de la variable protegida
targetCurrentPosea la variable localcurrentTargetPoseMeter. (Ia557c) - Se actualizaron los kdocs de
SpatialPanelySpatialExternalSurfacepara incluir dónde se renderiza el objeto dentro de su tamaño de diseño (I72104). - Se encapsuló la lógica de carga de
SpatialGltfModeldentro deSpatialGltfModelStatey se aclaró el comportamiento de falla. (Ibe98b) - Se aclaró
depthen los kdocs deSubspaceModifer.size(I0f84f).
Versión 1.0.0-alpha14
19 de mayo de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha14 y androidx.xr.compose:compose-testing:1.0.0-alpha14. La versión 1.0.0-alpha14 incluye estas confirmaciones.
Cambios en la API
- Se introdujo
transformingMovablepara el movimiento 3D predeterminado controlado por el sistema y se introdujo una nueva sobrecarga paramovablepara controlar los comportamientos de movimiento personalizados. (I50960) SpatialGltfModel.fromData()se quitó. (I4d083)- Se agregó una nueva interfaz de nodo modificador,
SubspaceMeasuredSizeAwareModifierNode, que proporciona una devolución de llamadaonRemeasureddespués del pase de medición.SubspaceLayoutAwareModifierNodeahora extiende esta nueva interfaz. Se actualizó el modificadoronSizeChangedpara usaronRemeasured, lo que garantiza que la devolución de llamada se active justo después de la medición, no después de la ubicación. (Iafbae). - Se actualizó
InteractionPolicyaInterface(I0ff30). - Se actualizó Compose
compileSdka la API 37. Esto significa que se requiere una versión mínima de AGP de 9.2.0 cuando se usa Compose. (Id45cd) - Se actualizaron los kdocs de
Size(Iefa9a).
Versión 1.0.0-alpha13
6 de mayo de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha13 y androidx.xr.compose:compose-testing:1.0.0-alpha13. La versión 1.0.0-alpha13 incluye estas confirmaciones.
Cambios en la API
- La API de Orbiter está pendiente de cambios adicionales, por lo que recomendamos suprimir los avisos de baja de Orbiters y estar atentos a los cambios de Orbiter en las próximas versiones.
- Quienes usen
SceneCoreEntitypara renderizar glTF deben asegurarse de pasarsession.scene.activitySpaceal parámetroparentde su llamada aGltfModel.createpara garantizar que se rendericen sus glTF. - Se agregó la API de
SpatialGltfModelpara permitir que los desarrolladores agreguen Gltf a sus apps de Compose para XR. Los desarrolladores también pueden consultar animaciones y nodos dentro de sus modelos de Gltf. (I8b542, b/495422586) - Se cambió
SceneCoreEntitySizeAdapterde clase a interfaz (I5a784, b/475292310). - Se cambió el nombre de
SurfaceProtectionaSpatialExternalSurfaceProtection. Se actualizaron los kdocs deSpatialExternalSurface(Ifad0a, b/485231082). - Se dio de baja
currentWindowAdaptiveInfoy se introdujo la versión 2 (I40ecf, b/424442112). - El modificador
resizableahora es público y se puede aplicar a grupos (p.ej.,SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - El modificador
movableahora es público. Este modificador funciona bien, en este momento, paraSpatialPanelsySpatialExternalSurface. Sin embargo, la intención es que sean compatibles con todos losSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063) - Se marcaron
SpatialEnterTransitionySpatialExitTransitioncomo@Immutable(If1710, b/487757837). - La API de
SpatialGltfModelse marca como restringida para esta versión, ya que se deben realizar pruebas adicionales. (Ibf003, b/466090694) - Se cambió el nombre de
DeviceTrackingMode.LAST_KNOWNaSPATIAL_LAST_KNOWN(con un resguardo obsoleto), se agregóINERTIAL_LAST_KNOWNpara el seguimiento de 3DoF y se agregóTRACKING_DEGRADEDaTrackingState. (Ie661c, b/445466590) - Se quitó el objeto
SpatialLayoutSpacerobsoleto (I7b36c). - Se quitó la API de padding obsoleta (If1886).
- Se agregó
floatRangea los valores de sesgo. Se quitó el valor predeterminado deLayoutDirection(I9d74e).
Correcciones de errores
- Se agregaron muestras de código y documentación de KDoc para
SpatialColumn,SpatialRowySpatialCurvedRow. (Iaf54f, b/495777633)
Versión 1.0.0-alpha12
25 de marzo de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha12 y androidx.xr.compose:compose-testing:1.0.0-alpha12. La versión 1.0.0-alpha12 contiene estas confirmaciones.
Cambios en la API
- Agrega la API de
SpatialGltfModely las APIs deSpatialGltfModelAnimationpara renderizar glTF y controlar animaciones. Se cambióSpatialGltfModelStateaAutoCloseable. Ahora, se deberá cerrar para liberar sus recursos. (I11fde, b/466065486, b/481379924). Sin embargo, la API deSpatialGltfModelse marca como restringida para esta versión, ya que se deben realizar pruebas adicionales. (Ibf003, b/466090694) - Se agregó una sobrecarga vacía obsoleta para
SubspaceModifier.rotate. (Idceb6). - Se cambió el nombre de la función
SpatialSmoothFeatheringEffectaspatialSmoothFeatheringEffecty se movió a un módulo de dibujo. Se actualizó el valor predeterminado de difuminado deSpatialExternalSurfacea nulo, lo que imita la antigua funcionalidad de ZeroFeatheringEffect. (I5fdaa, b/460426800) - Se quitó
onPointSourceParamsAvailable. En un futuro cercano, estará disponible una API de espacialización de audio diferente. (I86507, b/458513439) - Se agregó el comportamiento de lectura de derecha a izquierda para los modificadores de subespacio de desplazamiento. También se agregó
absoluteOffsetpara ignorar la dirección del diseño. (I30e4b, b/474409165)
Versión 1.0.0-alpha11
25 de febrero de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha11 y androidx.xr.compose:compose-testing:1.0.0-alpha11. La versión 1.0.0-alpha11 incluye estas confirmaciones.
Nuevas funciones
- Se agregó el parámetro
SuperSamplingaSpatialExternalSurfaces(Icd4d1).
Errores conocidos
- Un problema con
SurfaceEntityen SceneCore puede provocar que las apps fallen cuando se crean instancias deSpatialExternalSurface. Este problema se resolvió enandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12y sus versiones posteriores. Las apps afectadas deben actualizarse a las versiones más recientes.
Cambios en la API
- Se realizaron cambios en el padding del modificador de Subspace para que tenga en cuenta la dirección del diseño. (I53e25)
SpatialCapabilitiesahora está sellado y no se puede extender. (I07aef).- Las APIs de
SpatialRowySpatialColumnque aceptan un parámetro genéricoSpatialAlignmentdejaron de estar disponibles. En su lugar, usa las APIs que aceptanverticalAlignmentohorizontalAlignmentparaSpatialRowySpatialColumn, respectivamente. (Iec390). - Se combinaron las APIs de funciones
SubspaceLayoutsobrecargadas (Idd30a). - Se cambió el nombre de
SubspaceModifier.lookAtUserporrotateToLookAtUsery el del parámetroupporupDirection. (Icafb8) - Se convirtió
SpatialRowen una función intercalada (Ia2f20). - Se convirtió
SpatialColumnen una función intercalada (I681be). - Se quitó la API de cartelera (Ib76cd).
Versión 1.0.0-alpha10
28 de enero de 2026
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha10 y androidx.xr.compose:compose-testing:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.
Cambios en la API
- Se quitó la API obsoleta
ApplicationSubspace(Ia6596, b/468345186). - Se actualizó
SpatialShapea una interfaz sellada (I7e3f5, b/460426800). - Se quitarán las APIs obsoletas en
SpatialAlignment. (Ib0b61, b/468011887) - Se dio de baja
SpatialLayoutSpacery se introdujoSpatialSpacer. (I2ebf3, b/466071383) - Se actualizó la API de
UserSubspacepara reemplazar la terminología de "bloqueo diferido" por "bloqueo parcial". (I9ded1, b/464035984)
Versión 1.0.0-alpha09
3 de diciembre de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha09 y androidx.xr.compose:compose-testing:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.
Cambios en la API
- Se agregaron los modificadores
LookAtUsery Billboard, que permiten que el contenido siempre esté orientado hacia el usuario. (I49b99) - Se agregó la capacidad de establecer un
InteractionPolicyenSpatialExternalSurfacesySpatialPanels, lo que permite detectar clics y otros eventos de entrada en 3D. (Iae155) - Se agregó una sobrecarga de modificador de tamaño y
requiredSizecon ancho, altura y profundidad como valores de Dp. (I92f79). - La interfaz
ParentLayoutParamsModifierahora extiendeDelegatableSubspaceNode. (I1a6d4) ApplicationSubspacedejó de estar disponible y se reemplazó por la API de Subspace.- Se cambió el comportamiento de la API de Subspace para que solo proporcione un subespacio para toda la aplicación en la pose y la escala recomendadas.
- Se introdujo la API de
PlanarEmbeddedSubspacepara proporcionar subespacios incorporados en contextos 2D. (Id3343)
- Se agregó la marca
shouldAutoInvalidatea la API deSubspaceModifier.Node. (I93902). - Se agregó
required(Size|Width|Depth|Height)en las APIs que permiten a los desarrolladores restringir el tamaño de un@SubspaceComposablea un rango específico, sin tener en cuenta las restricciones de medición entrantes del elemento superior. (Ifaa78) - Se agregó
SubspaceModifier.onSizeChanged, que proporciona una devolución de llamada simple y enfocada para que los desarrolladores reaccionen cuando cambia el tamaño de un@SubspaceComposable. (I994f9). - Se quitó la API de Volume. Se debe usar la API de
SceneCoreEntityen lugar de la API de Volume. (I4162b) - Divide
SubspaceLayoutModifierNode.requestRelayouteninvalidateMeasurement/invalidatePlacement. (I14805) - Se agregó la API de
SpatialGltfModel, que permite a los desarrolladores renderizar glTF en Compose. (Icc91f) - Se introdujo la API de componibilidad
SpatialGltfModelpara renderizar glTF con facilidad (Iade67).
Correcciones de errores
- Se corrigió un error de diseño en
SceneCoreEntity. Ahora debería respetar correctamente sus restricciones. (I11bb8) - Se redujeron los módulos jxr-compose a
Compile sdk = 34(I2d5db).
Versión 1.0.0-alpha08
22 de octubre de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha08 y androidx.xr.compose:compose-testing:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se cambió
ResizePolicypara aceptaronResizeStart,onResizeUpdateyonResizeEnd. (I7e21f).
Correcciones de errores
- Se evita que se produzca una falla cuando se destruye una actividad con un Subspace. (I595a1).
Versión 1.0.0-alpha07
24 de septiembre de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha07 y androidx.xr.compose:compose-testing:1.0.0-alpha07. La versión 1.0.0-alpha07 incluye estas confirmaciones.
Cambios en la API
- Se mejoraron los KDocs para
SpatialMainPanel. (I27b70, b/444467891) - Se introdujo
SpatialArrangementpara organizar los elementos secundarios a lo largo del eje principal en diseños 3D, comoSpatialRowySpatialColumn. Esta nueva API proporciona opciones de disposición conocidas de Compose en 2D, comoStart,End,Center,SpaceBetween,SpaceAroundySpaceEvenly, con compatibilidad total con las direcciones de diseño LTR y RTL. (I7db38, b/436289959) - Se agregó una interfaz base para
SubspaceModifier.Nodecon el objetivo de mejorar la seguridad de tipos y la usabilidad de las interfaces de extensión, como- .
CompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(interno) (Iede00, b/440599394, b/440599394)
- Se quitó la restricción de
SpatialExternalSurface(I33315, b/439646773). - Se introdujo
SubspaceModifieren los elementos componibles de Subspace y se reemplazó el parámetro de restricciones porSubspaceModifierconSubspaceModifiersrelacionado con el tamaño. SiallowUnboundedSubspacees verdadero, los subespacios pueden tener restricciones sin límites. (Ib06e6, b/433331675) - Se dio de baja el
SubspaceModifiersmóvil y de tamaño variable ahora queDragPolicy()yResizePolicy()forman parte de las APIs deSpatialPanelySpatialExternalSurface(I397bf, b/437924639). - Se agregó compatibilidad con
LayoutDirectionen diseños espaciales. El elemento de componibilidad que usaSpatialAlignmentahora posicionará correctamente los elementos en contextos de LTR y RTL. (I964bb, b/436300273) - Agrega parámetros de cambio de tamaño y movimiento a las APIs de
Panelpara garantizar que estos comportamientos solo se puedan aplicar a los contenedores compatibles. (Id491c). - Se agregaron
sizeIn,widthIn,heightInydepthInSubspaceModifiers, que te permiten establecer restricciones mínimas y máximas exactas para el ancho, la altura y la profundidad. (I1af09, b/433330761)
Versión 1.0.0-alpha06
13 de agosto de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha06 y androidx.xr.compose:compose-testing:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.
Correcciones de errores
- Vuelve a crear el
ComposeXrOwnerLocalscuando se destruya el propietario del ciclo de vida. (9123ce1)
Versión 1.0.0-alpha05
30 de julio de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha05 y androidx.xr.compose:compose-testing:1.0.0-alpha05. La versión 1.0.0-alpha05 incluye estas confirmaciones.
Nuevas funciones
- Se hizo pública la clase de anotación
SubspaceComposable. (Ic2a34, b/399432430) - Se agregaron dos nuevos elementos componibles
SpatialExternalSurfaceque representan esferas de 180 y 360 grados. (I40ef2, b/391705799) - Se agregó
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147). - Se agregó la API de
SceneCoreEntitypara mejorar la interoperabilidad entreSceneCorey Compose para RE. (I50bb3, b/423020989) - Se proporcionó la API de
GravityAlignedsubspacepara admitir la funciónGravityAlignedsin escalar (I07359).
Cambios en la API
SpatialDialog()seguirá la configuración de prensa deSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Actualiza
minimumPanelDimensiona un nuevo tamaño de dimensión predeterminado deDimensions(0.1f, 0.1f, 0.1f)debido a su representación en metros. (Ib852a) - Los subespacios y los orbitadores ahora conservarán su estado interno en el espacio principal y cuando la app esté en segundo plano. En el modo de espacio principal, Subspace seguirá configurando su escena para prepararse para el cambio al modo de espacio completo. (I40317, b/416037751)
SpatialDialogsahora conservará su estado cuando la app esté en segundo plano. (I6aa56)- Ahora,
ApplicationSubspaceheredará su escala y posición recomendadas del sistema. (I4565f, b/418834194) - Se agregó un mejor mensaje de error y se activa el error antes cuando se usa un
SubspaceComposableen un contexto que no esSubspaceComposable. (Iee2ae, b/416484684) - Se actualizó
ExperimentalSubspaceVolumeApide advertencia a error, ya que las advertencias suelen pasarse por alto cuando se usan de forma incorrecta las APIs de elementos componibles. (I427aa, b/424864286) - El subespacio y
ApplicationSubspaceahora están restringidos porrecommendedContentBoxInFullSpace. Anteriormente, estaba limitado por el campo visual deSpatialUser. (I41015, b/423074142) - Se actualizó
SpatialElevationpara que use el tamaño mínimo y ya no use el tamaño hard-coded (I2dbe6, b/427785338). - Actualiza la forma en que oscurecemos la
SpatialAcitivityPanelpara que se actualice cuando se modifique una variable clave. (I0f64d, b/427999029) - Quita
VolumeConstraints.Unboundedy, en su lugar, establece los valores de restricción predeterminados en el equivalente. (Ie24ec, b/407938414) SpatialFeatheringSizeya no es público (I1c15b, b/399432430).- Se cambió el nombre de
Placeablede XR aSubspacePlaceablepara distinguirlo dePlaceablede Compose. (I74874) - Se quitaron los parámetros de configuración de Orbiter y se agregó
shouldRenderInNonSpatialcomo un parámetro nuevo. Además, se quitó la claseEdgeOffsety se agregóorbiterOffsetTypecomo un parámetro nuevo para consolidar las funciones deOrbiter(). También se cambió el nombre deOrbiterEdgeporContentEdge. (Iebf3d). - Se cambió el nombre de
MeasurableaSubspaceMeasurablepara diferenciar el tipo del tipoMeasurablede Compose. (I9726c) - Se cambió el nombre de
MeasureResultporSubspaceMeasureResult(I9f34d). - Se quitó la API de
setSubspaceContentpara usarsetContentde Compose con un elemento de componibilidadSubspace. (Ifff4c, b/421427391, b/421427391) - El nombre de
MeasurePolicycambió porSubspaceMeasurePolicy. (I37a9b, b/422553904) - Convierte
SubspaceSemanticsInfoen una interfaz sellada, ya que no podremos agregar miembros sin los valores predeterminados. (I372f9, b/423704068) - Se actualizó la documentación de
SpatialExternalSurfacey se cambió el nombre deContentSecurityLevelaSurfaceProtection(I3c460, b/420982808). - Se proporcionó un constructor sobrecargado para el modificador movible que permite el anclaje. (Ic0c70).
- Se agregaron más proveedores de posición para los cuadros de información, de modo que ahora los desarrolladores pueden controlar si el cuadro de información se coloca arriba, abajo, a la izquierda o a la derecha del ancla. Se agregó una API que toma un Shape para los cursores, de modo que se puedan proporcionar más formas personalizadas. (Ie513c, b/374766087, b/418854637)
- Se quitó
CoreEntitycomoPublishedApi(Ifee05).
Correcciones de errores
- Se solucionó un problema por el que
SpatialDialogparpadeaba cuando se renderizaba. (Ife73c, b/401619909) - Se solucionó un problema por el que
SpatialDialogno podía oscurecer el panel de actividad. (I8ca6c, b/367442109) - Se corrigió un error por el que el diálogo de XR no mostraba parte del contenido (I17cd5, b/418062437).
- Se corrigió un problema por el que se descartaba
SpatialPopupcuando se hacía clic dentro del contenido. (If262c, b/417245722) - Se corrigió el problema por el que, cuando se encadenaba
resizable().movable(), SpatialPanel no cambiaba de tamaño correctamente al nuevo tamaño. (I02ee3, b/422264230) - Se corrigió el problema por el que
topBarse superponía con el menú enSpatialComposeVideoPlayer(Id33bc, b/427168167). - Se corrigió el radio de esquina que no se renderizaba (I975fe, b/428261830).
Versión 1.0.0-alpha04
7 de mayo de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha04 y androidx.xr.compose:compose-testing:1.0.0-alpha04. La versión 1.0.0-alpha04 incluye estas confirmaciones.
Nuevas funciones
- Se agregó la interfaz
CompositionLocalConsumerSubspaceModifierNodepara permitir que los tipos personalizados deSubspaceModifieraccedan a los valores locales de composición. - Se agregó una nueva API de
SpatialPanelque sigue el estilo de implementación deAndroidViewde Compose y deja de estar disponible la versión anterior deViewBased SpatialPanel. - Se agregó el objeto complementario
VolumeConstraints.Unbounded, que representa restricciones ilimitadas. - Se agregó
SubspaceModifier.onPointSourceParamspara permitir una fuente de audio espacializado. - Se agregó un
ApplicationSubspacepúblico, que ofrece unVolumeConstraintsopcional para definir un área 3D en la que la app puede renderizar contenido espacial. De forma predeterminada, si no se especifican restricciones, el Subspace estará limitado por el campo visual actual de laSpatialUseren ancho y alto. Los usuarios pueden proporcionar restricciones para usar si no se puede determinar el campo visual. De lo contrario, se usan los valores predeterminados de ancho y alto del campo visual. - Se agregó
SpatialExternalSurface, que se puede usar para renderizar contenido estereoscópico.SpatialExternalSurfacese puede personalizar con modificadores (excepto alfa) y un efecto de difuminado de bordes. - Se agregó un nuevo modificador de subespacio
pointerHoverIconque permite a los usuarios establecer el ícono para el puntero espacial.
Cambios en la API
- Se quitó la restricción de
RequiresApi(34)en todos los paquetes de Jetpack XR. Esta restricción era redundante, ya que Jetpack XR actualmente solo está disponible en dispositivos con nivel de API 34 o superior. (Iae0f8) - Los proyectos lanzados con Kotlin 2.0 requieren KGP 2.0.0 o una versión posterior para consumirse. (Idb6b5).
- El control de retroceso ahora funcionará en paneles espaciales sin actividades incorporadas. Para que funcione el control de retroceso, debes especificar
android:enableOnBackInvokedCallback="true"en el manifiesto de Android. - El control de retroceso ahora funcionará en los diálogos espaciales. Para que funcione el control de retroceso, debes especificar
android:enableOnBackInvokedCallback="true"en el manifiesto de Android. - Los
SpatialPanelbasados en Compose y en View ahora pueden ajustar su tamaño según su contenido. - Ahora, los desarrolladores pueden establecer sus propios valores de
SpatialElevationLevelpersonalizados y no están limitados a los niveles predefinidos. - Ahora se puede personalizar el nivel de elevación del orbitador con el parámetro
elevation. - Ahora, el subespacio se puede limitar de forma predeterminada por el campo visual de
SpatialUseren ancho y alto. Si no se puede determinar el campo visual, se usan los valores predeterminados de ancho y alto del campo visual. - Se agregaron las nuevas devoluciones de llamada
onMoveStartyonMoveEndal modificadorMovable. Las devoluciones de llamadaonMoveStartyonMoveEndse llaman cuando el usuario comienza y termina de mover un elemento componible de subespacio con el modificador movible. - Se quitó el parámetro
namede las APIs espaciales, comoSpatialRowySpatialPanel. Para depurar árboles de Compose espaciales, usaSubspaceModifier.testTagen su lugar. - Se quitó una sobrecarga no compatible de
SpatialPopupque solo tienespatialElevationLevelycontent. Usa la interfaz que admitaonDimissRequest. - Se quitó la devolución de llamada
onPoseChangedel modificador Movable. UsaonMoveen su lugar. SubspaceModifiersya no aplicará sus efectos si se desconecta o se está desconectando.- La API de
SpatialRowexistente se dividió enSpatialRowySpatialCurvedRow. Si antes usabas el parámetrocurveRadiusdeSpatialRow, ahora usaSpatialCurvedRow, que ofrece el mismo comportamiento. MainPanelyActivityPanelya no tienen barras de título cuando se ejecutan en una imagen del sistema similarmente reciente.- Los modificadores de alfa y escala ahora se pueden apilar y multiplicarán sus valores para el valor de alfa o escala final aplicado.
- Se optimizó la devolución de llamada
onPoseChangedel modificador Movable para que el movimiento de la pose sea más fluido. - Los modificadores móviles y de cambio de tamaño ahora realizarán sus devoluciones de llamada en el subproceso principal para garantizar que los cambios de estado activen la recomposición.
- Se agregó la observación de estado a las fases de diseño y medición para garantizar que los cambios de estado en
SubspaceLayoutactiven el rediseño. - Se optimizaron las actualizaciones de la cadena de modificadores para reutilizar mejor los modificadores existentes.
Correcciones de errores
- Se detuvo la simulación cuando se muestra un
SpatialDialog. (Ic4594) - Ahora se ignorarán las solicitudes de cambio de diseño que se realicen mientras los nodos modificadores estén desconectados.
- Se quitaron las fases de cambio de diseño que activaban los modificadores Movable y Resizable.
- Se corrigió una falla en el elemento componible
MainPanel()que se producía cuando se establecía una dimensión en cero, ya sea directamente o durante un cálculo de diseño, p.ej., un cálculo deSpatialRow/SpatialColumn. En su lugar, ahora se ocultará el panel. Ten en cuenta que esta corrección aborda específicamente las fallas durante la fase de diseño. El cambio de tamaño del panel a cero a través de la interacción del usuario se controlará por separado. El panel oculto carece de affordances de IU. - Se corrigió un problema con
maintainAspectRatiodel modificador de cambio de tamaño. Ahora, se debería mantener la relación de aspecto. - Se solucionó un problema con los Subspaces anidados en el que se posicionaban de forma incorrecta para un solo fotograma.
- Se solucionó un problema por el que, a veces, no se aplicaban las esquinas redondeadas cuando correspondía.
NestedSubspacesya no aparecerá durante un fotograma en la ubicación incorrecta.
Versión 1.0.0-alpha03
26 de febrero de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha03 y androidx.xr.compose:compose-testing:1.0.0-alpha03 sin cambios notables desde la última versión alfa. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Versión 1.0.0-alpha02
12 de febrero de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha02 y androidx.xr.compose:compose-testing:1.0.0-alpha02. La versión 1.0.0-alpha02 incluye estas confirmaciones.
Nuevas funciones
- El panel de actividad ahora puede oscurecer su contenido cuando se activa un diálogo espacial.
- La API de
Orbiterahora se puede usar en contextos deSubspaceComposabley adjuntará Orbiters a su elemento superior componible basado enSubspaceLayoutmás cercano. - Se introdujo
LayoutCoordinatesAwareModifierNodepara permitir modificadores personalizados basados en la posición. - Se agregaron métodos de ciclo de vida de conexión y desconexión a
SubspaceModifier.Node. - Se agregó
scaleWithDistanceal modificador movible. Cuando se habilitascaleWithDistance, el elemento del subespacio que se mueve se expande o se contrae. También mantendrá cualquier escala explícita que haya tenido antes del movimiento.
Cambios en la API
- Se quitó
SessionCallbackProviderpara usarSpatialCapabilities.
Otros cambios
- Se redujo
minSDKa 24. Todas las APIs de Jetpack XR siguen requiriendo la API 34 en el entorno de ejecución. - Los constructores
OrbiterEdgeOffset.inner,EdgeOffset.outeryEdgeOffset.overlapya no son métodos@Composable, lo que permite usarlos en contextos que no admiten composición. - Se actualizaron los niveles de elevación espacial para que coincidan con la especificación de UX más reciente.
- Implementa la interfaz
SubspaceSemanticsInfoenMeasurableLayout. - Se cambió el nombre de
SubspaceModifierElementaSubspaceModifierNodeElement.
Correcciones de errores
- Se realizaron correcciones para estabilizar el orden de
SubspaceModifier.SubspaceModifierdebería comportarse de manera más confiable. Los modificadores de desplazamiento, rotación, escala, movimiento y cambio de tamaño ahora deberían poder usarse en cualquier orden.
Versión 1.0.0-alpha01
12 de diciembre de 2024
Lanzamiento de androidx.xr.compose:compose-*1.0.0-alpha01.
Funciones de la versión inicial
Versión inicial para desarrolladores de Jetpack Compose para XR. Usa conceptos conocidos de Compose, como filas y columnas, para crear diseños de IU espaciales en XR, ya sea que portes una app en 2D existente a XR o que crees una nueva app de XR desde cero. Esta biblioteca proporciona elementos componibles espaciales y de subespacio, como paneles espaciales y orbitadores, que te permiten colocar tu IU existente basada en Compose o Views en un diseño espacial. Se presenta el elemento componible de subespacio Volume, que te permite colocar entidades de SceneCore, como modelos 3D, en relación con tu IU. Obtén más información en esta guía para desarrolladores:
Subspace: Este elemento componible se puede colocar en cualquier lugar dentro de la jerarquía de la IU de tu app, lo que te permite mantener diseños para la IU espacial y en 2D sin perder el contexto entre los archivos. Esto facilita el uso compartido de elementos, como la arquitectura de la app existente, entre la XR y otros factores de forma sin necesidad de elevar el estado a través de todo el árbol de la IU ni rediseñar la app.SpatialPanel: Un panel espacial es un elemento componible de subespacio que te permite mostrar contenido de la app. Por ejemplo, puedes mostrar la reproducción de un video, imágenes estáticas o cualquier otro contenido en un panel espacial.
Orbitador: Un orbitador es un componente de la IU espacial. Está diseñado para adjuntarse a un panel espacial correspondiente y contiene elementos de navegación y de acción contextual relacionados con ese panel espacial. Por ejemplo, si creaste un panel espacial para mostrar contenido de video, puedes agregar controles de reproducción de video dentro de un orbitador.
Volumen: Coloca entidades de SceneCore, como modelos 3D, en relación con tu IU.
Diseño espacial: Puedes crear varios paneles espaciales y colocarlos dentro de un diseño espacial con
SpatialRow,SpatialColumn,SpatialBoxySpatialLayoutSpacer. UsaSubspaceModifierpara personalizar tu diseño.Componentes de IU espacial: Estos elementos se pueden reutilizar en tu IU en 2D, y sus atributos espaciales solo serán visibles cuando se habiliten las funciones espaciales.
SpatialDialog: El panel se desplazará ligeramente hacia atrás en la profundidad Z para mostrar un diálogo elevado.SpatialPopUp: El panel se desplazará ligeramente hacia atrás en la profundidad del eje Z para mostrar una ventana emergente elevada.SpatialElevation: Se puede configurarSpatialElevationLevelpara agregar elevación.
SpatialCapabilities: Las capacidades espaciales pueden cambiar a medida que los usuarios interactúan con tu app o el sistema, o incluso tu app puede cambiarlas, por ejemplo, cuando se mueve al espacio principal o al espacio completo. Para evitar problemas, tu app debe verificar
LocalSpatialCapabilities.currentpara determinar qué APIs son compatibles con el entorno actual.isSpatialUiEnabled: Elementos de la IU espacial (p.ej., SpatialPanel)isContent3dEnabled: Objetos 3DisAppEnvironmentEnabled: El entornoisPassthroughControlEnabled: Si la aplicación puede controlar el estado de transferencia o noisSpatialAudioEnabled: Audio espacial
Errores conocidos
- Actualmente, se requiere un minSDK de 30 para usar Jetpack Compose para XR. Como solución alternativa, puedes agregar la siguiente entrada de manifiesto
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>para poder compilar y ejecutar con un minSDK de 23. - Por el momento, las apps de Jetpack XR requieren que se solicite el permiso
android.permission.SCENE_UNDERSTANDINGen el AndroidManifest. - Cuando una app se inicia directamente en el espacio completo con la propiedad
PROPERTY_XR_ACTIVITY_START_MODEen su manifiesto, las actividades o aplicaciones se abren inicialmente en el espacio principal antes de pasar al espacio completo. - Es posible que los glTF en elementos componibles de volumen parpadeen inicialmente en la ubicación incorrecta.
- Si usas un SpatialDialog en un panel que se movió de forma significativa, el contenido se desplazará en la dirección incorrecta.