Jetpack Compose pour XR

Créez de manière déclarative des mises en page d'interface utilisateur spatiales qui exploitent les fonctionnalités spatiales d'Android XR.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
21 octobre 2026 - - 1.0.0-beta02 -

Déclarer des dépendances

Pour ajouter une dépendance à XR Compose, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :

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

Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Version 1.0

Version 1.0.0-beta02

21 octobre 2026

Publication d'androidx.xr.compose:compose:1.0.0-beta02 et d'androidx.xr.compose:compose-testing:1.0.0-beta02. Liste des commits de la version 1.0.0-beta02.

Modifications apportées à l'API

  • Les bibliothèques ciblent désormais Kotlin 2.2 et nécessitent kotlinc 2.2 (I82396, b/498369605).
  • Le paramètre halfLifeMs de FollowMode.soft() a été renommé halfLifeMillis. (I39187)
  • Conversion de PitchLimits en @JvmInline value class en empaquetant deux floats dans un Long pour éliminer les allocations d'objets. (Id43c3)
  • Ajout de nouveaux paramètres pour FollowMode.soft : halfLifeMs, startDelay et startThresholds. Suppression du paramètre durationMs, car il n'est plus nécessaire lors de la transition d'un algorithme smoothStep vers un algorithme exponentialDecay. (If0140)
  • Suppression de la surcharge SpatialActivityPanel obsolète. Utilisez plutôt la surcharge de SpatialActivityPanel qui accepte un SpatialActivityPanelController. (I5abc3)
  • Activez les transitions entre les contenus composables 3D et 2D dans une même activité dans FullSpaceMode. Cette modification est contrôlée par SpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237)
  • Exposition de la surcharge expérimentale Subspace qui accepte un paramètre FollowTarget pour prendre en charge le contenu suivant. (Iec1a9)
  • Suppression des modificateurs mobiles obsolètes. Utilisez plutôt le nouveau modificateur movable, qui accepte le nouveau MovePolicy comme paramètre. (Ib135d)
  • Suppression de DragPolicy obsolète. Utilisez SubspaceModifier.movable() à la place. (I108d4)
  • Abandon des surcharges sans état Slider et RangeSlider au profit de leurs versions avec état. Remplacement du nom de activeRangeStart et activeRangeEnd dans RangeSliderState par startValue et endValue, et abandon des anciennes API Slider non promues et expérimentales avec DeprecationLevel.HIDDEN. (If8995)

Correction de bugs

  • Correction de RotateToLookAtUser en introduisant poseInActivitySpace pour garantir un calcul correct de la pose pour tous les types de sous-espaces, y compris ceux associés à des ancres ou à des utilisateurs.Ica367b
  • Correction d'un plantage de Constraints lorsque Orbiter est associé à de grands panneaux (I8c4bf)
  • Correction d'un bug dans SubspaceLayoutNode où removeAll() entraînait des allocations ArrayList inutiles. Correction des performances de calcul de la profondeur. I34a10a
  • La dépendance androidx.lifecycle:lifecycle-runtime a été mise à jour vers la version 2.10.0. Cette version est requise pour que les vérifications lint de l'environnement d'exécution du cycle de vie groupé s'exécutent avec AGP 9.5.0-alpha04 ou une version ultérieure. (I99bfd, b/556807521)
  • Amélioration des kdocs liés à AudioOutputProvider pour souligner qu'il ne doit pas être réutilisé avec plusieurs instances ExoPlayer (I6b18e)
  • Correction de problèmes mineurs d'orthographe et de grammaire dans les fichiers kdoc (Id3ba6)

Problèmes connus

  • Cette version de androidx.xr.compose dépend de androidx.xr.scenecore:1.0.0-rc01, qui présente une fuite de mémoire connue. Dans votre configuration de compilation, vous pouvez remplacer explicitement la dépendance SceneCore par la version 1.0.0, qui inclut un correctif pour la fuite de mémoire.

Version 1.0.0-beta01

23 septembre 2026

Publication d'androidx.xr.compose:compose:1.0.0-beta01 et d'androidx.xr.compose:compose-testing:1.0.0-beta01. La version 1.0.0-beta01 contient ces commits.

Modifications apportées à l'API

  • Suppression de DragPolicy (obsolète). Utilisez SubspaceModifier.movable() à la place. (I108d4)
  • Suppression de l'élément ResizePolicy obsolète et de ses utilisations dans SpatialPanel et SpatialExternalSurface. Suppression d'une fonction SubspaceModifier.resizable obsolète. Utilisez plutôt le nouveau SubspaceModifier.resizable avec un nouveau ResizePolicy. (I59e6b)
  • Ajout du paramètre isPitchUpdateEnabled pour permettre d'activer ou de désactiver le suivi de la hauteur de ton indépendamment. (Ie9e86)
  • Suppression de la possibilité de valeur nulle de pitchLimits et changement de nom de PitchLimits.UNCONSTRAINED en PitchLimits.FullRange. (I0154f)
  • ExposedDropdownMenu est désormais une fonction d'extension sur ExposedDropdownMenuBoxScope au lieu d'un membre. Vous devrez peut-être mettre à jour votre code avec une nouvelle importation. (Ie8a65)
  • Suppression de la classe SurfaceProtection obsolète. Utilisez SpatialExternalSurfaceProtection à la place. (Iab2c6)
  • La fonction Orbiter qui accepte un OrbiterPoseProvider a été abandonnée au profit de celle qui utilise SpatialAlignment. (I4d12b)
  • SpatialActivityPanel nécessite désormais un SpatialActivityPanelController (instancié à l'aide de rememberSpatialActivityPanelController) pour lancer et gérer les activités intégrées. (Id25c6)
  • Suppression du paramètre upDirection de rotateToLookAtUser et ajout de paramètres de contraintes de rotation (isYawUpdateEnabled et pitchLimits). (I1370a)

Correction de bugs

  • Correction de divers problèmes liés à InteractionPolicy. Un plantage se produisait si un événement d'entrée se produisait au moment où le composable ou l'enfant (par exemple, un Orbiter) lançait une séquence de suppression. Correction d'un problème qui entraînait la réception d'événements de pointage par un enfant. (Ifc477)
  • Réduction de la taille du panneau dans RotateToLookAtUserActivity pour éviter le rognage sur les appareils avec un champ de vision plus petit. (I8d672)

Problèmes connus

  • Un problème lié aux panneaux Compose XR peut entraîner une corruption de ce qui est affiché lorsque de nombreux panneaux sont créés dans une même activité, même après leur destruction.

Version 1.0.0-alpha17

12 août 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha17 et d'androidx.xr.compose:compose-testing:1.0.0-alpha17. Liste des commits de la version 1.0.0-alpha17

Modifications apportées à l'API

  • Supprimez la classe de valeur Meter, qui est remplacée par virtualPixelDensity dans Scenecore. (I690ee)
  • L'API SpatialGltfModel est désormais expérimentale et doit être activée pour être utilisée. (I4557e)
  • Rendre system redimensionnable et nullable (Ib0093)
  • Density exposé dans SubspaceSemanticsInfo pour les tests. (I2e826)
  • L'option par défaut ResizePolicy a été renommée system, et une nouvelle option Default sans paramètres a été ajoutée. (Ic8b16)
  • Identification de FollowTarget comme étant expérimental. L'ensemble de l'API FollowingSubspace est désormais expérimental. (Id4ee3)
  • Suppression des API GltfAnimation (Ic2894)
  • La méthode MovePolicy.default() paramétrée a été renommée MovePolicy.system(). Introduction d'une propriété val MovePolicy.Default pour représenter le comportement de déplacement standard par défaut. (Iedcc9)
  • Élargissement des exigences d'activation de ExperimentalMoveAnchorPolicy à PlaneSemantic et PlaneOrientation (Ief927)
  • Suppression de resetMins de VolumeConstraints.offset (Ib2f2f)
  • Suppression de la fonction SceneCoreEntitySizeAdapter, devenue obsolète. (Ib6722)
  • Suppression de la surcharge Subspace obsolète avec allowUnboundedSubspace. (I8e97f)
  • Suppression de la surcharge du modificateur de sémantique, devenue obsolète. (I4ac10)

Correction de bugs

  • Correction d'un problème qui entraînait le déclenchement d'événements d'entrée par les enfants d'un Composable auquel un InteractionPolicy était associé (Icdba6)

Version 1.0.0-alpha16

15 juillet 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha16 et d'androidx.xr.compose:compose-testing:1.0.0-alpha16. Liste des commits de la version 1.0.0-alpha16

Modifications apportées à l'API

  • Suppression des API ComponentOverride (I820c4)
  • Les API GltfAnimation et SpatialGltfModelAnimation ont été marquées comme expérimentales. Certaines propriétés ont été transformées en getters. (I8d689, b/524771027)
  • Correction du comportement de densité globale en établissant une conversion constante entre les mètres et les pixels. Meter.kt est obsolète. Session.scene.virtualPixelDensity peut désormais être utilisé comme alternative. (I122ff, b/430097855, b/474168798)
  • Mise à jour du modificateur redimensionnable pour utiliser un ResizePolicy au lieu de deux modificateurs (I7fb0f, b/496257436, b/519672992)
  • Ajout d'un paramètre de tolérance Dp = Dp(0.5f) à toutes les assertions d'égalité de dimension et de position à virgule flottante publiques dans SubspaceAssertions.kt. Le comportement de tolérance par défaut (0.5.dp) est entièrement documenté. (I266cb, b/521491915)
  • Ajout d'une surcharge movable avec le paramètre movePolicy et abandon de transformingMovable et movable (Ic88c1, b/481781189)
  • Ajout de nouvelles variantes non interactives d'éléments de liste standards et d'éléments de liste segmentés qui respectent les spécifications Material Expressive. La version non expressive est obsolète. (Ide4de, b/491994186)
  • Pour Subspace, le paramètre allowUnboundedSubspace est désormais obsolète et masqué. Le comportement non limité doit désormais être obtenu en utilisant SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity) sur le modificateur Subspace. Le paramètre allowUnboundedSubspace a été supprimé de FollowingSubspace. (Ia72ae, b/433624021)
  • Session.create a été converti en fonction de suspension. (I5d27f)
  • Ajout de SubspaceModifier.spatializedAudioOutput, qui permet de spatialiser la lecture audio via ExoPlayer ou via un SoundEffectPlayer (I46697, b/489421980, b/497867019).
  • Mise à jour de ComponentActivity.requestHomeSpace() et requestFullSpace() pour renvoyer SpaceRequestResult pour la validation de l'état. (If1672)
  • AnchorEntity a été renommé AnchorSpace (Ifa95e, b/513619219).
  • Méthode fromResource non restreinte de SpatialGltfModelSource (I1f5a1, b/503047416)
  • Les membres SubspaceSemanticsMatcher sont publics : la propriété description, les méthodes d'usine associées (expectValue, keyIsDefined, keyNotDefined), les fonctions membres (matches, matchesAny) et les opérateurs (and, or, not). (I972a4, b/460427288)
  • Mise à jour de SubspaceModifier.semantics, SubspaceModifier.testTag, SubspaceSemanticsInfo et SubspaceSemanticsModifierNode pour utiliser des types de sémantique spatiale sélectionnés. (I80dea, b/460427288)
  • Changement de nom : position devient align dans SpatialAlignment. Les méthodes de décalage directionnel individuelles ont été supprimées au profit d'une API align unifiée. (I9bdb2, b/479805937)
  • Suppression des API de mode d'espace obsolètes de SpatialConfiguration. (I1ef5c, b/458712461)
  • Introduction de SubspaceSemanticsConfiguration. Il s'agit d'une configuration de propriétés sémantiques pour un nœud Spatial. Cette classe expose de manière sécurisée les méthodes de requête pour la sémantique 3D sans divulguer les fonctionnalités sémantiques 2D fondamentales aux consommateurs externes. (Id025e, b/460427288)
  • Introduction de SubspaceSemanticsPropertyReceiver : un wrapper dédié qui limite les propriétés du conteneur de mise en page 3D aux champs valides (initialement testTag et contentDescription). (I5cf5c, b/460427288)

Correction de bugs

  • Mise à jour de hasContentDescription du modificateur sémantique pour utiliser par défaut la correspondance de sous-chaîne. (I08214)
  • Ajout de FollowBehavior.ExponentialDecay() restreint, qui fournit un comportement de suivi fluide guidé par la physique élastique. (I7449c, b/485639909, b/500493335)

La plupart des API seront concernées. Plus précisément, LocalSession CompositionLocal et tous les CompositionLocals qui dépendent de LocalSession (par exemple, LocalSpatialConfiguration, LocalSpatialCapabilities, etc.) seront désormais résolus en null ou ses versions non XR avant l'initialisation de Session.

Une fois que Session est disponible, la recomposition est déclenchée avec l'état correct. (I0cfa4, b/514712835, b/514712835)

  • Clarification de la documentation pour ComponentActivity.requestHomeSpace et ComponentActivity.requestFullSpace concernant le comportement de suspension, l'annulation et la simultanéité. Mise à jour des tests pour vérifier la propagation de CancellationException. (I22f75, b/493289528)

Version 1.0.0-alpha15

17 juin 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha15 et d'androidx.xr.compose:compose-testing:1.0.0-alpha15. Liste des commits de la version 1.0.0-alpha15

Modifications apportées à l'API

  • Abandon de ResizePolicy et de l'ancien modificateur redimensionnable, remplacés par une nouvelle surcharge SubspaceModifier.resizable et SubspaceModifier.transformingResizable. (I9e4bc)
  • Mise à jour des API SpatialGltfModel : ajout de la compatibilité avec le chargement de modèles à partir de ressources via SpatialGltfModelSource.fromResource. Changement du nom de "speed" en playbackSpeed dans SpatialGltfModelAnimation et ajout d'une méthode resume(). SpatialGltfModelStatus.Loaded et Loading sont désormais des objets. (I523de)
  • Identification de rotateToLookAtUser comme API expérimentale. (I86c16)
  • La variable protégée targetCurrentPose a été déplacée et renommée en variable locale currentTargetPoseMeter. (Ia557c)
  • Mise à jour des kdocs SpatialPanel et SpatialExternalSurface pour inclure l'emplacement où l'objet est affiché dans sa taille de mise en page (I72104)
  • Encapsulation de la logique de chargement SpatialGltfModel dans SpatialGltfModelState et clarification du comportement en cas d'échec. (Ibe98b)
  • Clarification de depth dans les kdocs SubspaceModifer.size (I0f84f)

Version 1.0.0-alpha14

19 mai 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha14 et d'androidx.xr.compose:compose-testing:1.0.0-alpha14. Liste des commits de la version 1.0.0-alpha14

Modifications apportées à l'API

  • Introduction de transformingMovable pour le mouvement 3D par défaut géré par le système et introduction d'une nouvelle surcharge pour movable afin de gérer les comportements de mouvement personnalisés. (I50960)
  • SpatialGltfModel.fromData() a été supprimé. (I4d083)
  • Ajout d'une nouvelle interface de nœud de modificateur, SubspaceMeasuredSizeAwareModifierNode, qui fournit un rappel onRemeasured après la passe de mesure. SubspaceLayoutAwareModifierNode étend désormais cette nouvelle interface. Le modificateur onSizeChanged a été mis à jour pour utiliser onRemeasured, ce qui garantit que le rappel est déclenché juste après la mesure, et non après l'emplacement. (Iafbae)
  • Mise à jour de InteractionPolicy vers Interface (I0ff30)
  • Mise à jour de Compose compileSdk vers l'API 37. Cela signifie qu'une version minimale d'AGP 9.2.0 est requise lorsque vous utilisez Compose. (Id45cd)
  • Mise à jour des kdocs Size (Iefa9a)

Version 1.0.0-alpha13

6 mai 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha13 et d'androidx.xr.compose:compose-testing:1.0.0-alpha13. Liste des commits de la version 1.0.0-alpha13

Modifications apportées à l'API

  • L'API Orbiter est en attente de modifications supplémentaires. Nous vous recommandons de supprimer les avis d'abandon pour les Orbiters et de surveiller les modifications apportées aux Orbiters dans les prochaines versions.
  • Si vous utilisez SceneCoreEntity pour afficher des glTF, assurez-vous de transmettre session.scene.activitySpace au paramètre parent de votre appel GltfModel.create pour que vos glTF s'affichent.
  • Ajout de l'API SpatialGltfModel pour permettre aux développeurs d'ajouter des Gltf à leurs applications Compose pour XR. Les développeurs peuvent également interroger les animations et les nœuds dans leurs modèles glTF. (I8b542, b/495422586)
  • SceneCoreEntitySizeAdapter passe de classe à interface (I5a784, b/475292310).
  • Changement de nom : SurfaceProtection devient SpatialExternalSurfaceProtection. Documents mis à jour SpatialExternalSurface kdocs (Ifad0a, b/485231082)
  • Abandon de currentWindowAdaptiveInfo et introduction de sa version 2 (I40ecf, b/424442112)
  • Le modificateur resizable est désormais public et applicable aux groupes (par exemple, SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787)
  • Le modificateur movable est désormais public. Ce modificateur fonctionne bien, pour le moment, pour SpatialPanels et SpatialExternalSurface. Toutefois, l'objectif est de les rendre compatibles avec tous les SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • SpatialEnterTransition et SpatialExitTransition marqués comme @Immutable (If1710, b/487757837)
  • L'API SpatialGltfModel est marquée comme limitée pour cette version en attendant des tests supplémentaires. (Ibf003, b/466090694)
  • DeviceTrackingMode.LAST_KNOWN a été renommé SPATIAL_LAST_KNOWN (avec un remplacement obsolète), INERTIAL_LAST_KNOWN a été ajouté pour le suivi 3DoF et TRACKING_DEGRADED a été ajouté à TrackingState. (Ie661c, b/445466590)
  • Suppression de SpatialLayoutSpacer, devenu obsolète (I7b36c)
  • Suppression de l'API de marge intérieure obsolète (If1886)
  • Ajout de floatRange aux valeurs de biais. Suppression de la valeur par défaut de LayoutDirection (I9d74e)

Correction de bugs

  • Ajout d'exemples de code et de documentation KDoc pour SpatialColumn, SpatialRow et SpatialCurvedRow. (Iaf54f, b/495777633)

Version 1.0.0-alpha12

25 mars 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha12 et d'androidx.xr.compose:compose-testing:1.0.0-alpha12. Liste des commits de la version 1.0.0-alpha12

Modifications apportées à l'API

  • Ajoutez l'API SpatialGltfModel et les API SpatialGltfModelAnimation pour afficher les glTF et contrôler les animations. SpatialGltfModelState a été remplacé par AutoCloseable. Il doit désormais être fermé pour libérer ses ressources. (I11fde, b/466065486, b/481379924). Toutefois, l'API SpatialGltfModel est marquée comme limitée pour cette version en attendant des tests supplémentaires. (Ibf003, b/466090694)
  • Ajout d'une surcharge vide obsolète pour SubspaceModifier.rotate. (Idceb6)
  • La fonction SpatialSmoothFeatheringEffect a été renommée spatialSmoothFeatheringEffect et déplacée vers un module de dessin. La valeur de lissage par défaut de SpatialExternalSurface a été remplacée par "null", ce qui imite l'ancienne fonctionnalité ZeroFeatheringEffect. (I5fdaa, b/460426800)
  • Suppression de onPointSourceParamsAvailable. Une autre API de spatialisation audio sera disponible prochainement. (I86507, b/458513439)
  • Ajout du comportement de droite à gauche pour les modificateurs de sous-espace de décalage. Ajout de absoluteOffset pour ignorer la direction de la mise en page. (I30e4b, b/474409165)

Version 1.0.0-alpha11

25 février 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha11 et d'androidx.xr.compose:compose-testing:1.0.0-alpha11. Liste des commits de la version 1.0.0-alpha11

Nouvelles fonctionnalités

  • Ajout du paramètre SuperSampling à SpatialExternalSurfaces (Icd4d1)

Problèmes connus

  • Un problème avec SurfaceEntity dans SceneCore peut entraîner le plantage des applications lors de la création d'instances de SpatialExternalSurface. Ce problème est résolu dans les versions androidx.xr.scenecore:scenecore-*:1.0.0-alpha13, androidx.xr.compose:compose:1.0.0-alpha12 et ultérieures. Les applications concernées doivent être mises à jour vers les dernières versions.

Modifications apportées à l'API

  • Modification de la marge intérieure du modificateur Subspace pour prendre en compte la direction de la mise en page. (I53e25)
  • SpatialCapabilities est désormais scellé et ne peut pas être prolongé. (I07aef)
  • Les API SpatialRow et SpatialColumn qui acceptent un paramètre SpatialAlignment générique sont obsolètes. Utilisez plutôt les API qui acceptent verticalAlignment ou horizontalAlignment pour SpatialRow et SpatialColumn, respectivement. (Iec390)
  • Combinaison des API de fonction SubspaceLayout de surcharge (Idd30a)
  • Remplacement du nom SubspaceModifier.lookAtUser par rotateToLookAtUser et du paramètre up par upDirection. (Icafb8)
  • Conversion de SpatialRow en fonction intégrée (Ia2f20)
  • Conversion de SpatialColumn en fonction intégrée (I681be)
  • Suppression de l'API Billboard (Ib76cd)

Version 1.0.0-alpha10

28 janvier 2026

Publication d'androidx.xr.compose:compose:1.0.0-alpha10 et d'androidx.xr.compose:compose-testing:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10

Modifications apportées à l'API

  • Suppression de l'API obsolète ApplicationSubspace (Ia6596, b/468345186)
  • Mise à jour de SpatialShape vers une interface scellée (I7e3f5, b/460426800)
  • Suppression des API obsolètes dans SpatialAlignment. (Ib0b61, b/468011887)
  • Abandon de SpatialLayoutSpacer et introduction de SpatialSpacer. (I2ebf3, b/466071383)
  • Mise à jour de l'API UserSubspace pour remplacer la terminologie "verrouillage différé" par "verrouillage logiciel". (I9ded1, b/464035984)

Version 1.0.0-alpha09

3 décembre 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha09 et d'androidx.xr.compose:compose-testing:1.0.0-alpha09. Liste des commits de la version 1.0.0-alpha09

Modifications apportées à l'API

  • Ajout des modificateurs LookAtUser et Billboard, qui permettent au contenu d'être toujours orienté vers l'utilisateur. (I49b99)
  • Ajoute la possibilité de définir un InteractionPolicy sur SpatialExternalSurfaces et SpatialPanels, ce qui permet de détecter les clics et d'autres événements d'entrée 3D. (Iae155)
  • Ajout d'une surcharge de modificateur de taille et requiredSize avec la largeur, la hauteur et la profondeur en tant que valeurs Dp. (I92f79)
  • L'interface ParentLayoutParamsModifier étend désormais DelegatableSubspaceNode. (I1a6d4)
  • ApplicationSubspace est obsolète et remplacé par l'API Subspace.
    • Le comportement de l'API Subspace est modifié pour ne fournir qu'un sous-espace à l'échelle de l'application à la position et à l'échelle recommandées.
    • L'API PlanarEmbeddedSubspace est introduite pour fournir des sous-espaces intégrés dans des contextes 2D. (Id3343)
  • Ajout de l'option shouldAutoInvalidate à l'API SubspaceModifier.Node. (I93902)
  • Ajout de required(Size|Width|Depth|Height) dans les API qui permettent aux développeurs de limiter la taille d'un @SubspaceComposable à une plage spécifique, sans tenir compte des contraintes de mesure entrantes du parent. (Ifaa78)
  • Ajout de SubspaceModifier.onSizeChanged, qui fournit un rappel simple et ciblé permettant aux développeurs de réagir lorsque la taille d'un @SubspaceComposable change. (I994f9)
  • Suppression de l'API Volume. L'API SceneCoreEntity doit être utilisée à la place de l'API Volume. (I4162b)
  • Divisez SubspaceLayoutModifierNode.requestRelayout en invalidateMeasurement/invalidatePlacement. (I14805)
  • Ajout de l'API SpatialGltfModel, qui permet aux développeurs d'afficher des glTF dans Compose. (Icc91f)
  • Introduction de l'API composable SpatialGltfModel pour afficher facilement des glTF (Iade67)

Correction de bugs

  • Correction d'un bug de mise en page dans SceneCoreEntity. Il devrait désormais respecter correctement ses contraintes. (I11bb8)
  • Abaissement des modules jxr-compose à Compile sdk = 34 (I2d5db)

Version 1.0.0-alpha08

22 octobre 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha08 et d'androidx.xr.compose:compose-testing:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08

Modifications apportées à l'API

  • Modification de ResizePolicy pour accepter onResizeStart, onResizeUpdate et onResizeEnd. (I7e21f)

Correction de bugs

  • Correction d'un plantage lors de la destruction d'une activité avec un Subspace. (I595a1)

Version 1.0.0-alpha07

24 septembre 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha07 et d'androidx.xr.compose:compose-testing:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07

Modifications apportées à l'API

  • Amélioration de KDocs pour SpatialMainPanel. (I27b70, b/444467891)
  • Introduction de SpatialArrangement pour organiser les enfants le long de l'axe principal dans les mises en page 3D telles que SpatialRow et SpatialColumn. Cette nouvelle API fournit des options d'agencement familières de Compose 2D, y compris Start, End, Center, SpaceBetween, SpaceAround et SpaceEvenly, avec une compatibilité totale avec les directions de mise en page de gauche à droite et de droite à gauche. (I7db38, b/436289959)
  • Ajout d'une interface de base pour SubspaceModifier.Node afin d'améliorer la sûreté du typage et la facilité d'utilisation des interfaces d'extension, telles que
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • (Iede00, b/440599394, b/440599394)CoreEntityNode
  • SpatialExternalSurface (I33315, b/439646773)
  • Introduction de SubspaceModifier dans les composables Subspace et remplacement du paramètre de contraintes par SubspaceModifier avec SubspaceModifiers lié à la taille. Si allowUnboundedSubspace est défini sur "true", les sous-espaces peuvent toujours avoir des contraintes non limitées. (Ib06e6, b/433331675)
  • Abandon de SubspaceModifiers déplaçable et redimensionnable maintenant que DragPolicy() et ResizePolicy() font partie des API SpatialPanel et SpatialExternalSurface (I397bf, b/437924639)
  • Ajout de la compatibilité avec LayoutDirection dans les mises en page spatiales. Le composable utilisant SpatialAlignment positionne désormais correctement les éléments dans les contextes LTR et RTL. (I964bb, b/436300273)
  • Ajoutez des paramètres redimensionnables et déplaçables aux API Panel pour vous assurer que ces comportements ne peuvent être appliqués qu'aux conteneurs compatibles. (Id491c)
  • Ajout de sizeIn, widthIn, heightIn, depthIn et SubspaceModifiers, qui vous permettent de définir des contraintes minimales et maximales exactes pour la largeur, la hauteur et la profondeur. (I1af09, b/433330761)

Version 1.0.0-alpha06

13 août 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha06 et d'androidx.xr.compose:compose-testing:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06

Correction de bugs

  • Recréez le ComposeXrOwnerLocals lorsque le propriétaire du cycle de vie est détruit. (9123ce1)

Version 1.0.0-alpha05

30 juillet 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha05 et d'androidx.xr.compose:compose-testing:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05

Nouvelles fonctionnalités

  • La classe d'annotation SubspaceComposable est désormais publique. (Ic2a34, b/399432430)
  • Deux nouveaux composables SpatialExternalSurface représentant des sphères à 180 et 360 degrés. (I40ef2, b/391705799)
  • Ajout de SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147)
  • Ajout de l'API SceneCoreEntity pour améliorer l'interopérabilité entre SceneCore et Compose pour XR. (I50bb3, b/423020989)
  • Fourniture de l'API GravityAlignedsubspace pour prendre en charge la fonctionnalité GravityAligned non mise à l'échelle (I07359)

Modifications apportées à l'API

  • SpatialDialog() suivra la configuration de la presse SpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)
  • Remplacez la taille de dimension par défaut de minimumPanelDimension par Dimensions(0.1f, 0.1f, 0.1f), car elle est exprimée en mètres. (Ib852a)
  • Les sous-espaces et les Orbiters conservent désormais leur état interne dans l'espace d'accueil et lorsque l'application est en arrière-plan. En mode Home Space, Subspace configure toujours sa scène en vue du passage en mode Full Space. (I40317, b/416037751)
  • SpatialDialogs conserve désormais son état lorsque l'application est en arrière-plan. (I6aa56)
  • ApplicationSubspace héritera désormais de l'échelle et de la position recommandées par le système. (I4565f, b/418834194)
  • Ajout d'un message d'erreur amélioré et déclenchement de l'erreur plus tôt lorsqu'un SubspaceComposable est utilisé dans un contexte non-SubspaceComposable. (Iee2ae, b/416484684)
  • Mise à jour de ExperimentalSubspaceVolumeApi de "Avertissement" à "Erreur", car les avertissements sont souvent ignorés en cas d'utilisation incorrecte des API composables. (I427aa, b/424864286)
  • Le sous-espace et ApplicationSubspace sont désormais limités par recommendedContentBoxInFullSpace. Auparavant, il était limité par le champ de vision de SpatialUser. (I41015, b/423074142)
  • Mise à jour de SpatialElevation pour utiliser la taille minimale au lieu d'une taille codée en dur (I2dbe6, b/427785338)
  • Mise à jour de la façon dont nous appliquons un scrim à SpatialAcitivityPanel pour qu'il soit mis à jour lorsqu'une variable clé est modifiée. (I0f64d, b/427999029)
  • Supprimez VolumeConstraints.Unbounded et définissez les valeurs de contrainte par défaut sur l'équivalent. (Ie24ec, b/407938414)
  • SpatialFeatheringSize n'est plus public (I1c15b, b/399432430).
  • Le nom de Placeable XR a été remplacé par SubspacePlaceable pour le distinguer de Placeable de Compose. (I74874)
  • Suppression des paramètres Orbiter et ajout de shouldRenderInNonSpatial en tant que nouveau paramètre. De plus, la classe EdgeOffset est supprimée et orbiterOffsetType est ajouté en tant que nouveau paramètre pour consolider les fonctions Orbiter(). Nous avons également renommé OrbiterEdge en ContentEdge. (Iebf3d)
  • Remplacement de Measurable par SubspaceMeasurable pour différencier le type du type Measurable de Compose. (I9726c)
  • MeasureResult a été renommé SubspaceMeasureResult. (I9f34d)
  • Suppression de l'API setSubspaceContent au profit de l'utilisation de setContent de Compose avec un composable Subspace. (Ifff4c, b/421427391, b/421427391)
  • MeasurePolicy a été renommé SubspaceMeasurePolicy. (I37a9b, b/422553904)
  • Transformez SubspaceSemanticsInfo en interface scellée, car nous ne pourrons pas ajouter de membres sans les valeurs par défaut. (I372f9, b/423704068)
  • Mise à jour de la documentation de SpatialExternalSurface, changement de nom de ContentSecurityLevel en SurfaceProtection (I3c460, b/420982808)
  • Ajout d'un constructeur surchargé pour le modificateur déplaçable qui permet l'ancrage. (Ic0c70)
  • Ajout d'un fournisseur de position pour les info-bulles afin que les développeurs puissent contrôler si l'info-bulle est placée au-dessus, en dessous, à gauche ou à droite de l'ancre. Ajout d'une API qui accepte une forme pour les curseurs de saisie, afin de pouvoir fournir davantage de formes personnalisées. (Ie513c, b/374766087, b/418854637)
  • Suppression de CoreEntity en tant que PublishedApi (Ifee05)

Correction de bugs

  • Résolution du problème où SpatialDialog clignotait lors de l'affichage. (Ife73c, b/401619909)
  • Correction d'un problème qui empêchait SpatialDialog d'appliquer un scrim au panneau d'activité. (I8ca6c, b/367442109)
  • Correction d'un problème qui empêchait la boîte de dialogue XR d'afficher certains contenus (I17cd5, b/418062437)
  • Correction d'un problème qui entraînait la fermeture de SpatialPopup lorsque l'utilisateur cliquait dans le contenu. (If262c, b/417245722)
  • Correction d'un problème qui empêchait SpatialPanel de se redimensionner correctement à la nouvelle taille lors de l'enchaînement de resizable().movable(). (I02ee3, b/422264230)
  • Correction du chevauchement de topBar avec le menu dans SpatialComposeVideoPlayer (Id33bc, b/427168167)
  • Correction d'un problème de rendu de l'arrondi d'angle (I975fe, b/428261830)

Version 1.0.0-alpha04

7 mai 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha04 et d'androidx.xr.compose:compose-testing:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04

Nouvelles fonctionnalités

  • Ajout de l'interface CompositionLocalConsumerSubspaceModifierNode pour permettre aux types SubspaceModifier personnalisés d'accéder aux valeurs locales de composition.
  • Ajout d'une API SpatialPanel qui suit le style d'implémentation AndroidView de Compose et abandon de l'API ViewBased SpatialPanel précédente.
  • Ajout de l'objet compagnon VolumeConstraints.Unbounded, qui représente des contraintes non limitées.
  • Ajout de SubspaceModifier.onPointSourceParams pour permettre une source audio spatialisée.
  • Un ApplicationSubspace public a été ajouté, offrant un VolumeConstraints facultatif pour définir une zone 3D dans laquelle l'application peut afficher du contenu spatial. Par défaut, si aucune contrainte n'est spécifiée, le sous-espace est limité par le champ de vision actuel de SpatialUser en largeur et en hauteur. Les utilisateurs peuvent fournir des contraintes à utiliser si le champ de vision ne peut pas être déterminé. Sinon, les valeurs par défaut de largeur et de hauteur du champ de vision sont utilisées.
  • Ajout de SpatialExternalSurface, qui peut être utilisé pour afficher du contenu stéréoscopique. SpatialExternalSurface est personnalisable avec des modificateurs (sauf alpha) et un effet de fondu des bords.
  • Ajout d'un nouveau modificateur de sous-espace pointerHoverIcon qui permet aux utilisateurs de définir l'icône du pointeur spatial.

Modifications apportées à l'API

  • Suppression de la restriction RequiresApi(34) sur tous les packages Jetpack XR. Cette restriction était redondante, car Jetpack XR n'est actuellement disponible que sur les appareils de niveau d'API 34 ou supérieur. (Iae0f8)
  • Les projets publiés avec Kotlin 2.0 nécessitent KGP 2.0.0 ou une version ultérieure pour être utilisés. (Idb6b5)
  • La gestion du bouton Retour fonctionnera désormais sur les panneaux spatiaux sans activités intégrées. Pour que la gestion du bouton Retour fonctionne, vous devez spécifier android:enableOnBackInvokedCallback="true" dans le fichier manifeste Android.
  • La gestion du bouton Retour fonctionne désormais sur les boîtes de dialogue spatiales. Pour que la gestion du bouton Retour fonctionne, vous devez spécifier android:enableOnBackInvokedCallback="true" dans le fichier manifeste Android.
  • Les SpatialPanel basés sur Compose et sur les vues peuvent désormais se redimensionner en fonction de leur contenu.
  • Les développeurs peuvent désormais définir leurs propres valeurs SpatialElevationLevel personnalisées et ne sont pas limités aux niveaux prédéfinis.
  • Le niveau d'élévation de l'orbiteur peut désormais être personnalisé via le paramètre elevation.
  • Le sous-espace peut désormais être limité par défaut par le champ de vision de SpatialUser en largeur et en hauteur. Si le champ de vision ne peut pas être déterminé, les valeurs par défaut de largeur et de hauteur du champ de vision sont utilisées.
  • Ajout des nouveaux rappels onMoveStart et onMoveEnd au modificateur Movable. Les rappels onMoveStart et onMoveEnd sont appelés lorsque l'utilisateur commence et termine le déplacement d'un composable Subspace avec le modificateur "movable".
  • Le paramètre name a été supprimé des API spatiales telles que SpatialRow et SpatialPanel. Pour déboguer les arbres Compose spatiaux, utilisez plutôt SubspaceModifier.testTag.
  • Suppression d'une surcharge non compatible de SpatialPopup qui ne comporte que spatialElevationLevel et content. Veuillez utiliser l'interface compatible avec onDimissRequest.
  • Le rappel onPoseChange du modificateur Movable a été supprimé. Utilisez onMove à la place.
  • Les SubspaceModifiers n'appliqueront plus leurs effets s'ils sont dissociés ou en cours de dissociation.
  • L'API SpatialRow existante a été divisée en SpatialRow et SpatialCurvedRow. Si vous utilisiez auparavant le paramètre curveRadius de SpatialRow, utilisez désormais SpatialCurvedRow, qui offre le même comportement.
  • MainPanel et ActivityPanel n'ont plus de barres de titre lorsqu'ils sont exécutés sur une image système récente similaire.
  • Les modificateurs d'alpha et d'échelle sont désormais empilables et multiplieront leurs valeurs pour la valeur d'alpha ou d'échelle finale appliquée.
  • Le rappel onPoseChange du modificateur Movable a été optimisé pour fluidifier les mouvements de pose.
  • Les modificateurs movable et resizable exécutent désormais leurs rappels sur le thread principal pour s'assurer que les changements d'état déclenchent la recomposition.
  • Ajout de l'observation de l'état aux phases de mise en page et de mesure pour s'assurer que les changements d'état dans SubspaceLayout déclenchent une nouvelle mise en page.
  • Mises à jour de la chaîne de modificateurs optimisée pour mieux réutiliser les modificateurs existants.

Correction de bugs

  • Arrêt de l'affichage du scrim lorsqu'un SpatialDialog est affiché. (Ic4594)
  • Les requêtes de réorganisation effectuées lorsque les nœuds de modificateur sont dissociés sont désormais ignorées.
  • Suppression des phases de réorganisation déclenchées par les modificateurs Movable et Resizable.
  • Correction d'un plantage dans le composable MainPanel() qui se produisait lorsque l'une des dimensions était définie sur zéro, soit directement, soit lors d'un calcul de mise en page, par exemple un calcul SpatialRow/SpatialColumn. Le panneau sera désormais masqué. Notez que ce correctif concerne spécifiquement les plantages pendant la phase de mise en page. Le redimensionnement du panneau à zéro via l'interaction de l'utilisateur sera géré séparément. Le panneau masqué manque d'affordances d'interface utilisateur.
  • Correction d'un problème lié à maintainAspectRatio à partir du modificateur redimensionnable. Le format d'image devrait maintenant être conservé.
  • Correction d'un problème de positionnement incorrect des sous-espaces imbriqués pour une seule image.
  • Correction d'un problème qui empêchait parfois l'application des angles arrondis lorsqu'ils étaient requis.
  • NestedSubspaces n'apparaîtra plus au mauvais endroit pendant une image.

Version 1.0.0-alpha03

26 février 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha03 et d'androidx.xr.compose:compose-testing:1.0.0-alpha03 sans modification notable par rapport à la dernière version alpha. Liste des commits de la version 1.0.0-alpha03

Version 1.0.0-alpha02

12 février 2025

Publication d'androidx.xr.compose:compose:1.0.0-alpha02 et d'androidx.xr.compose:compose-testing:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Nouvelles fonctionnalités

  • Le panneau d'activité peut désormais masquer son contenu lorsqu'une boîte de dialogue spatiale est activée.
  • L'API Orbiter est désormais utilisable dans les contextes SubspaceComposable et associe les Orbiters à leur parent composable le plus proche basé sur SubspaceLayout.
  • Introduction de LayoutCoordinatesAwareModifierNode pour permettre l'utilisation de modificateurs personnalisés basés sur le positionnement.
  • Ajout de méthodes de cycle de vie d'association/dissociation à SubspaceModifier.Node.
  • Ajout de scaleWithDistance au modificateur movable. Lorsque scaleWithDistance est activé, l'élément de sous-espace déplacé s'agrandit ou se réduit. Il conservera également l'échelle explicite qu'il avait avant le déplacement.

Modifications apportées à l'API

  • Suppression de SessionCallbackProvider au profit de SpatialCapabilities.

Autres changements

  • minSDK réduit à 24. Toutes les API Jetpack XR continuent de nécessiter l'API 34 au moment de l'exécution.
  • Orbiter Les constructeurs EdgeOffset.inner, EdgeOffset.outer et EdgeOffset.overlap ne sont plus des méthodes @Composable, ce qui permet de les utiliser dans des contextes non composables.
  • Mise à jour des niveaux d'élévation spatiale pour qu'ils correspondent aux dernières spécifications de l'expérience utilisateur.
  • Implémentez l'interface SubspaceSemanticsInfo dans MeasurableLayout.
  • Changement de nom : SubspaceModifierElement devient SubspaceModifierNodeElement.

Corrections de bugs

  • Correctifs pour stabiliser l'ordre des SubspaceModifier. SubspaceModifier devrait fonctionner de manière plus fiable. Les modificateurs de décalage, de rotation, de mise à l'échelle, de déplacement et de redimensionnement devraient désormais être utilisables dans n'importe quel ordre.

Version 1.0.0-alpha01

12 décembre 2024

Publication d'androidx.xr.compose:compose-*1.0.0-alpha01.

Fonctionnalités de la version initiale

  • Version initiale de Jetpack Compose pour XR pour les développeurs. Utilisez des concepts Compose que vous connaissez déjà, comme les lignes et les colonnes, pour créer des mises en page d'interface utilisateur spatiales en XR, que vous portiez une application 2D existante vers la XR ou que vous créiez une application XR de zéro. Cette bibliothèque fournit des composables de sous-espace et d'espace, tels que des panneaux spatiaux et des orbiteurs, qui vous permettent de placer votre UI 2D Compose ou basée sur des vues existante dans une mise en page spatiale. Il introduit le composable de sous-espace Volume, qui vous permet de placer des entités SceneCore, telles que des modèles 3D, par rapport à votre UI. Pour en savoir plus, consultez ce guide du développeur :

    • Subspace : ce composable peut être placé n'importe où dans la hiérarchie de l'UI de votre application, ce qui vous permet de conserver les mises en page pour l'UI 2D et spatiale sans perdre le contexte entre les fichiers. Il est ainsi plus facile de partager des éléments tels que l'architecture d'application existante entre la XR et d'autres facteurs de forme, sans avoir à hisser l'état dans l'ensemble de l'arborescence de l'UI ni à restructurer votre application.

    • SpatialPanel : un panneau spatial est un composable de sous-espace qui vous permet d'afficher le contenu de l'application. Par exemple, vous pouvez afficher une lecture vidéo, des images fixes ou tout autre contenu dans un panneau spatial.

    • Orbiteur : un orbiteur est un composant d'interface utilisateur spatiale. Il est conçu pour être associé à un panneau spatial correspondant, et contient des éléments de navigation et d'action contextuelle liés à ce panneau spatial. Par exemple, si vous avez créé un panneau spatial pour afficher du contenu vidéo, vous pouvez ajouter des commandes de lecture vidéo dans un orbiteur.

    • Volume : placez des entités SceneCore, telles que des modèles 3D, par rapport à votre UI.

  • Mise en page spatiale : Vous pouvez créer plusieurs panneaux spatiaux et les placer dans une mise en page spatiale à l'aide de SpatialRow, SpatialColumn, SpatialBox et SpatialLayoutSpacer. Utilisez des SubspaceModifier pour personnaliser votre mise en page.

  • Composants d'interface utilisateur spatiale : ces éléments peuvent être réutilisés dans votre UI 2D, et leurs attributs spatiaux ne seront visibles que lorsque les fonctionnalités spatiales seront activées.

    • SpatialDialog : le panneau recule légèrement sur l'axe Z pour afficher une boîte de dialogue surélevée.
    • SpatialPopUp : le panneau recule légèrement sur l'axe Z pour afficher un pop-up surélevé.
    • SpatialElevation : SpatialElevationLevel peut être défini pour ajouter une élévation.
  • SpatialCapabilities : les fonctionnalités spatiales peuvent changer lorsque les utilisateurs interagissent avec votre application ou le système, ou même être modifiées par votre application elle-même (par exemple, en passant à Home Space ou Full Space). Pour éviter les problèmes, votre application doit vérifier LocalSpatialCapabilities.current pour déterminer les API compatibles avec l'environnement actuel. isSpatialUiEnabled : éléments d'interface utilisateur spatiaux (par exemple, SpatialPanel) isContent3dEnabled : objets 3D isAppEnvironmentEnabled : l'environnement isPassthroughControlEnabled : indique si l'application peut contrôler l'état de passthrough ou non isSpatialAudioEnabled : son spatial

Problèmes connus

  • Actuellement, un minSDK de 30 est requis pour utiliser Jetpack Compose pour XR. Pour contourner ce problème, vous pouvez ajouter l'entrée de fichier manifeste <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> suivante afin de pouvoir compiler et exécuter l'application avec un minSDK de 23.
  • Les applications Jetpack XR nécessitent actuellement de demander l'autorisation android.permission.SCENE_UNDERSTANDING dans le fichier AndroidManifest.
  • Lorsqu'une application se lance directement dans l'espace Full Space à l'aide de la propriété PROPERTY_XR_ACTIVITY_START_MODE dans son fichier manifeste, les activités/applications sont d'abord ouvertes dans l'espace Home Space avant de passer à l'espace Full Space.
  • Les glTF dans les composables Volume peuvent initialement clignoter au mauvais endroit.
  • L'utilisation d'un SpatialDialog dans un panneau qui a été déplacé de manière significative pousse le contenu dans la mauvaise direction.