Jetpack Compose pour 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.
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
halfLifeMsdeFollowMode.soft()a été renomméhalfLifeMillis. (I39187) - Conversion de
PitchLimitsen@JvmInline value classen empaquetant deux floats dans unLongpour éliminer les allocations d'objets. (Id43c3) - Ajout de nouveaux paramètres pour
FollowMode.soft:halfLifeMs,startDelayetstartThresholds. Suppression du paramètredurationMs, car il n'est plus nécessaire lors de la transition d'un algorithmesmoothStepvers un algorithmeexponentialDecay. (If0140) - Suppression de la surcharge
SpatialActivityPanelobsolète. Utilisez plutôt la surcharge deSpatialActivityPanelqui accepte unSpatialActivityPanelController. (I5abc3) - Activez les transitions entre les contenus composables 3D et 2D dans une même activité dans
FullSpaceMode. Cette modification est contrôlée parSpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237) - Exposition de la surcharge expérimentale
Subspacequi accepte un paramètreFollowTargetpour prendre en charge le contenu suivant. (Iec1a9) - Suppression des modificateurs mobiles obsolètes. Utilisez plutôt le nouveau modificateur movable, qui accepte le nouveau
MovePolicycomme paramètre. (Ib135d) - Suppression de
DragPolicyobsolète. UtilisezSubspaceModifier.movable()à la place. (I108d4) - Abandon des surcharges sans état
SlideretRangeSliderau profit de leurs versions avec état. Remplacement du nom deactiveRangeStartetactiveRangeEnddansRangeSliderStateparstartValueetendValue, et abandon des anciennes API Slider non promues et expérimentales avecDeprecationLevel.HIDDEN. (If8995)
Correction de bugs
- Correction de
RotateToLookAtUseren introduisantposeInActivitySpacepour 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
SubspaceLayoutNodeoùremoveAll()entraînait des allocationsArrayListinutiles. Correction des performances de calcul de la profondeur. I34a10a - La dépendance
androidx.lifecycle:lifecycle-runtimea é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 à
AudioOutputProviderpour souligner qu'il ne doit pas être réutilisé avec plusieurs instancesExoPlayer(I6b18e) - Correction de problèmes mineurs d'orthographe et de grammaire dans les fichiers kdoc (Id3ba6)
Problèmes connus
- Cette version de
androidx.xr.composedépend deandroidx.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épendanceSceneCorepar la version1.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). UtilisezSubspaceModifier.movable()à la place. (I108d4) - Suppression de l'élément
ResizePolicyobsolète et de ses utilisations dansSpatialPaneletSpatialExternalSurface. Suppression d'une fonctionSubspaceModifier.resizableobsolète. Utilisez plutôt le nouveauSubspaceModifier.resizableavec un nouveauResizePolicy. (I59e6b) - Ajout du paramètre
isPitchUpdateEnabledpour 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
pitchLimitset changement de nom dePitchLimits.UNCONSTRAINEDenPitchLimits.FullRange. (I0154f) ExposedDropdownMenuest désormais une fonction d'extension surExposedDropdownMenuBoxScopeau lieu d'un membre. Vous devrez peut-être mettre à jour votre code avec une nouvelle importation. (Ie8a65)- Suppression de la classe
SurfaceProtectionobsolète. UtilisezSpatialExternalSurfaceProtectionà la place. (Iab2c6) - La fonction Orbiter qui accepte un
OrbiterPoseProvidera été abandonnée au profit de celle qui utiliseSpatialAlignment. (I4d12b) SpatialActivityPanelnécessite désormais unSpatialActivityPanelController(instancié à l'aide derememberSpatialActivityPanelController) pour lancer et gérer les activités intégrées. (Id25c6)- Suppression du paramètre
upDirectionderotateToLookAtUseret ajout de paramètres de contraintes de rotation (isYawUpdateEnabledetpitchLimits). (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
RotateToLookAtUserActivitypour é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 parvirtualPixelDensitydansScenecore. (I690ee) - L'API
SpatialGltfModelest désormais expérimentale et doit être activée pour être utilisée. (I4557e) - Rendre
systemredimensionnable et nullable (Ib0093) Densityexposé dansSubspaceSemanticsInfopour les tests. (I2e826)- L'option par défaut
ResizePolicya été renomméesystem, et une nouvelle optionDefaultsans paramètres a été ajoutée. (Ic8b16) - Identification de
FollowTargetcomme étant expérimental. L'ensemble de l'APIFollowingSubspaceest désormais expérimental. (Id4ee3) - Suppression des API
GltfAnimation(Ic2894) - La méthode
MovePolicy.default()paramétrée a été renomméeMovePolicy.system(). Introduction d'une propriétéval MovePolicy.Defaultpour représenter le comportement de déplacement standard par défaut. (Iedcc9) - Élargissement des exigences d'activation de
ExperimentalMoveAnchorPolicyàPlaneSemanticetPlaneOrientation(Ief927) - Suppression de
resetMinsdeVolumeConstraints.offset(Ib2f2f) - Suppression de la fonction
SceneCoreEntitySizeAdapter, devenue obsolète. (Ib6722) - Suppression de la surcharge
Subspaceobsolète avecallowUnboundedSubspace. (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
Composableauquel unInteractionPolicyé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
GltfAnimationetSpatialGltfModelAnimationont é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.virtualPixelDensitypeut désormais être utilisé comme alternative. (I122ff, b/430097855, b/474168798) - Mise à jour du modificateur redimensionnable pour utiliser un
ResizePolicyau 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 dansSubspaceAssertions.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
movePolicyet abandon detransformingMovableetmovable(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
allowUnboundedSubspaceest désormais obsolète et masqué. Le comportement non limité doit désormais être obtenu en utilisantSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) sur le modificateur Subspace. Le paramètreallowUnboundedSubspacea été supprimé deFollowingSubspace. (Ia72ae, b/433624021) Session.createa été converti en fonction de suspension. (I5d27f)- Ajout de
SubspaceModifier.spatializedAudioOutput, qui permet de spatialiser la lecture audio viaExoPlayerou via unSoundEffectPlayer(I46697, b/489421980, b/497867019). - Mise à jour de
ComponentActivity.requestHomeSpace()etrequestFullSpace()pour renvoyerSpaceRequestResultpour la validation de l'état. (If1672) AnchorEntitya été renomméAnchorSpace(Ifa95e, b/513619219).- Méthode
fromResourcenon restreinte deSpatialGltfModelSource(I1f5a1, b/503047416) - Les membres
SubspaceSemanticsMatchersont 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,SubspaceSemanticsInfoetSubspaceSemanticsModifierNodepour utiliser des types de sémantique spatiale sélectionnés. (I80dea, b/460427288) - Changement de nom :
positiondevientaligndansSpatialAlignment. Les méthodes de décalage directionnel individuelles ont été supprimées au profit d'une APIalignunifié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 (initialementtestTagetcontentDescription). (I5cf5c, b/460427288)
Correction de bugs
- Mise à jour de
hasContentDescriptiondu 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.requestHomeSpaceetComponentActivity.requestFullSpaceconcernant le comportement de suspension, l'annulation et la simultanéité. Mise à jour des tests pour vérifier la propagation deCancellationException. (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
ResizePolicyet de l'ancien modificateur redimensionnable, remplacés par une nouvelle surchargeSubspaceModifier.resizableetSubspaceModifier.transformingResizable. (I9e4bc) - Mise à jour des API
SpatialGltfModel: ajout de la compatibilité avec le chargement de modèles à partir de ressources viaSpatialGltfModelSource.fromResource. Changement du nom de "speed" enplaybackSpeeddansSpatialGltfModelAnimationet ajout d'une méthode resume().SpatialGltfModelStatus.Loaded et Loading sont désormais des objets. (I523de) - Identification de
rotateToLookAtUsercomme API expérimentale. (I86c16) - La variable protégée
targetCurrentPosea été déplacée et renommée en variable localecurrentTargetPoseMeter. (Ia557c) - Mise à jour des kdocs
SpatialPaneletSpatialExternalSurfacepour inclure l'emplacement où l'objet est affiché dans sa taille de mise en page (I72104) - Encapsulation de la logique de chargement
SpatialGltfModeldansSpatialGltfModelStateet clarification du comportement en cas d'échec. (Ibe98b) - Clarification de
depthdans les kdocsSubspaceModifer.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
transformingMovablepour le mouvement 3D par défaut géré par le système et introduction d'une nouvelle surcharge pourmovableafin 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 rappelonRemeasuredaprès la passe de mesure.SubspaceLayoutAwareModifierNodeétend désormais cette nouvelle interface. Le modificateuronSizeChangeda été mis à jour pour utiliseronRemeasured, ce qui garantit que le rappel est déclenché juste après la mesure, et non après l'emplacement. (Iafbae) - Mise à jour de
InteractionPolicyversInterface(I0ff30) - Mise à jour de Compose
compileSdkvers 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
SceneCoreEntitypour afficher des glTF, assurez-vous de transmettresession.scene.activitySpaceau paramètreparentde votre appelGltfModel.createpour que vos glTF s'affichent. - Ajout de l'API
SpatialGltfModelpour 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) SceneCoreEntitySizeAdapterpasse de classe à interface (I5a784, b/475292310).- Changement de nom :
SurfaceProtectiondevientSpatialExternalSurfaceProtection. Documents mis à jourSpatialExternalSurfacekdocs (Ifad0a, b/485231082) - Abandon de
currentWindowAdaptiveInfoet introduction de sa version 2 (I40ecf, b/424442112) - Le modificateur
resizableest désormais public et applicable aux groupes (par exemple,SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - Le modificateur
movableest désormais public. Ce modificateur fonctionne bien, pour le moment, pourSpatialPanelsetSpatialExternalSurface. Toutefois, l'objectif est de les rendre compatibles avec tous lesSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitionetSpatialExitTransitionmarqués comme@Immutable(If1710, b/487757837)- L'API
SpatialGltfModelest marquée comme limitée pour cette version en attendant des tests supplémentaires. (Ibf003, b/466090694) DeviceTrackingMode.LAST_KNOWNa été renomméSPATIAL_LAST_KNOWN(avec un remplacement obsolète),INERTIAL_LAST_KNOWNa été ajouté pour le suivi 3DoF etTRACKING_DEGRADEDa é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
floatRangeaux valeurs de biais. Suppression de la valeur par défaut deLayoutDirection(I9d74e)
Correction de bugs
- Ajout d'exemples de code et de documentation KDoc pour
SpatialColumn,SpatialRowetSpatialCurvedRow. (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
SpatialGltfModelet les APISpatialGltfModelAnimationpour afficher les glTF et contrôler les animations.SpatialGltfModelStatea été remplacé parAutoCloseable. Il doit désormais être fermé pour libérer ses ressources. (I11fde, b/466065486, b/481379924). Toutefois, l'APISpatialGltfModelest 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
SpatialSmoothFeatheringEffecta été renomméespatialSmoothFeatheringEffectet déplacée vers un module de dessin. La valeur de lissage par défaut deSpatialExternalSurfacea é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
absoluteOffsetpour 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
SurfaceEntitydans SceneCore peut entraîner le plantage des applications lors de la création d'instances deSpatialExternalSurface. Ce problème est résolu dans les versionsandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12et 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)
SpatialCapabilitiesest désormais scellé et ne peut pas être prolongé. (I07aef)- Les API
SpatialRowetSpatialColumnqui acceptent un paramètreSpatialAlignmentgénérique sont obsolètes. Utilisez plutôt les API qui acceptentverticalAlignmentouhorizontalAlignmentpourSpatialRowetSpatialColumn, respectivement. (Iec390) - Combinaison des API de fonction
SubspaceLayoutde surcharge (Idd30a) - Remplacement du nom
SubspaceModifier.lookAtUserparrotateToLookAtUseret du paramètreupparupDirection. (Icafb8) - Conversion de
SpatialRowen fonction intégrée (Ia2f20) - Conversion de
SpatialColumnen 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
SpatialShapevers une interface scellée (I7e3f5, b/460426800) - Suppression des API obsolètes dans
SpatialAlignment. (Ib0b61, b/468011887) - Abandon de
SpatialLayoutSpaceret introduction deSpatialSpacer. (I2ebf3, b/466071383) - Mise à jour de l'API
UserSubspacepour 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
LookAtUseret Billboard, qui permettent au contenu d'être toujours orienté vers l'utilisateur. (I49b99) - Ajoute la possibilité de définir un
InteractionPolicysurSpatialExternalSurfacesetSpatialPanels, 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
requiredSizeavec la largeur, la hauteur et la profondeur en tant que valeurs Dp. (I92f79) - L'interface
ParentLayoutParamsModifierétend désormaisDelegatableSubspaceNode. (I1a6d4) ApplicationSubspaceest 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
PlanarEmbeddedSubspaceest introduite pour fournir des sous-espaces intégrés dans des contextes 2D. (Id3343)
- Ajout de l'option
shouldAutoInvalidateà l'APISubspaceModifier.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@SubspaceComposablechange. (I994f9) - Suppression de l'API Volume. L'API
SceneCoreEntitydoit être utilisée à la place de l'API Volume. (I4162b) - Divisez
SubspaceLayoutModifierNode.requestRelayouteninvalidateMeasurement/invalidatePlacement. (I14805) - Ajout de l'API
SpatialGltfModel, qui permet aux développeurs d'afficher des glTF dans Compose. (Icc91f) - Introduction de l'API composable
SpatialGltfModelpour 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
ResizePolicypour accepteronResizeStart,onResizeUpdateetonResizeEnd. (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
SpatialArrangementpour organiser les enfants le long de l'axe principal dans les mises en page 3D telles queSpatialRowetSpatialColumn. Cette nouvelle API fournit des options d'agencement familières de Compose 2D, y comprisStart,End,Center,SpaceBetween,SpaceAroundetSpaceEvenly, 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.Nodeafin d'améliorer la sûreté du typage et la facilité d'utilisation des interfaces d'extension, telles queCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNode- (Iede00, b/440599394, b/440599394)
CoreEntityNode
SpatialExternalSurface(I33315, b/439646773)- Introduction de
SubspaceModifierdans les composables Subspace et remplacement du paramètre de contraintes parSubspaceModifieravecSubspaceModifierslié à la taille. SiallowUnboundedSubspaceest défini sur "true", les sous-espaces peuvent toujours avoir des contraintes non limitées. (Ib06e6, b/433331675) - Abandon de
SubspaceModifiersdéplaçable et redimensionnable maintenant queDragPolicy()etResizePolicy()font partie des APISpatialPaneletSpatialExternalSurface(I397bf, b/437924639) - Ajout de la compatibilité avec
LayoutDirectiondans les mises en page spatiales. Le composable utilisantSpatialAlignmentpositionne 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
Panelpour vous assurer que ces comportements ne peuvent être appliqués qu'aux conteneurs compatibles. (Id491c) - Ajout de
sizeIn,widthIn,heightIn,depthInetSubspaceModifiers, 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
ComposeXrOwnerLocalslorsque 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
SubspaceComposableest désormais publique. (Ic2a34, b/399432430) - Deux nouveaux composables
SpatialExternalSurfacerepré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
SceneCoreEntitypour améliorer l'interopérabilité entreSceneCoreet Compose pour XR. (I50bb3, b/423020989) - Fourniture de l'API
GravityAlignedsubspacepour prendre en charge la fonctionnalitéGravityAlignednon mise à l'échelle (I07359)
Modifications apportées à l'API
SpatialDialog()suivra la configuration de la presseSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Remplacez la taille de dimension par défaut de
minimumPanelDimensionparDimensions(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)
SpatialDialogsconserve désormais son état lorsque l'application est en arrière-plan. (I6aa56)ApplicationSubspacehé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
SubspaceComposableest utilisé dans un contexte non-SubspaceComposable. (Iee2ae, b/416484684) - Mise à jour de
ExperimentalSubspaceVolumeApide "Avertissement" à "Erreur", car les avertissements sont souvent ignorés en cas d'utilisation incorrecte des API composables. (I427aa, b/424864286) - Le sous-espace et
ApplicationSubspacesont désormais limités parrecommendedContentBoxInFullSpace. Auparavant, il était limité par le champ de vision deSpatialUser. (I41015, b/423074142) - Mise à jour de
SpatialElevationpour 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 à
SpatialAcitivityPanelpour qu'il soit mis à jour lorsqu'une variable clé est modifiée. (I0f64d, b/427999029) - Supprimez
VolumeConstraints.Unboundedet définissez les valeurs de contrainte par défaut sur l'équivalent. (Ie24ec, b/407938414) SpatialFeatheringSizen'est plus public (I1c15b, b/399432430).- Le nom de
PlaceableXR a été remplacé parSubspacePlaceablepour le distinguer dePlaceablede Compose. (I74874) - Suppression des paramètres Orbiter et ajout de
shouldRenderInNonSpatialen tant que nouveau paramètre. De plus, la classeEdgeOffsetest supprimée etorbiterOffsetTypeest ajouté en tant que nouveau paramètre pour consolider les fonctionsOrbiter(). Nous avons également renomméOrbiterEdgeenContentEdge. (Iebf3d) - Remplacement de
MeasurableparSubspaceMeasurablepour différencier le type du typeMeasurablede Compose. (I9726c) MeasureResulta été renomméSubspaceMeasureResult. (I9f34d)- Suppression de l'API
setSubspaceContentau profit de l'utilisation desetContentde Compose avec un composableSubspace. (Ifff4c, b/421427391, b/421427391) MeasurePolicya été renomméSubspaceMeasurePolicy. (I37a9b, b/422553904)- Transformez
SubspaceSemanticsInfoen 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 deContentSecurityLevelenSurfaceProtection(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
CoreEntityen tant quePublishedApi(Ifee05)
Correction de bugs
- Résolution du problème où
SpatialDialogclignotait lors de l'affichage. (Ife73c, b/401619909) - Correction d'un problème qui empêchait
SpatialDialogd'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
SpatialPopuplorsque 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
topBaravec le menu dansSpatialComposeVideoPlayer(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
CompositionLocalConsumerSubspaceModifierNodepour permettre aux typesSubspaceModifierpersonnalisés d'accéder aux valeurs locales de composition. - Ajout d'une API
SpatialPanelqui suit le style d'implémentationAndroidViewde Compose et abandon de l'APIViewBased SpatialPanelprécédente. - Ajout de l'objet compagnon
VolumeConstraints.Unbounded, qui représente des contraintes non limitées. - Ajout de
SubspaceModifier.onPointSourceParamspour permettre une source audio spatialisée. - Un
ApplicationSubspacepublic a été ajouté, offrant unVolumeConstraintsfacultatif 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 deSpatialUseren 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.SpatialExternalSurfaceest personnalisable avec des modificateurs (sauf alpha) et un effet de fondu des bords. - Ajout d'un nouveau modificateur de sous-espace
pointerHoverIconqui 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
SpatialPanelbasé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
SpatialElevationLevelpersonnalisé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
SpatialUseren 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
onMoveStartetonMoveEndau modificateurMovable. Les rappelsonMoveStartetonMoveEndsont appelés lorsque l'utilisateur commence et termine le déplacement d'un composable Subspace avec le modificateur "movable". - Le paramètre
namea été supprimé des API spatiales telles queSpatialRowetSpatialPanel. Pour déboguer les arbres Compose spatiaux, utilisez plutôtSubspaceModifier.testTag. - Suppression d'une surcharge non compatible de
SpatialPopupqui ne comporte quespatialElevationLeveletcontent. Veuillez utiliser l'interface compatible aveconDimissRequest. - Le rappel
onPoseChangedu modificateur Movable a été supprimé. UtilisezonMoveà la place. - Les
SubspaceModifiersn'appliqueront plus leurs effets s'ils sont dissociés ou en cours de dissociation. - L'API
SpatialRowexistante a été divisée enSpatialRowetSpatialCurvedRow. Si vous utilisiez auparavant le paramètrecurveRadiusdeSpatialRow, utilisez désormaisSpatialCurvedRow, qui offre le même comportement. MainPaneletActivityPaneln'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
onPoseChangedu 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
SubspaceLayoutdé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
SpatialDialogest 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 calculSpatialRow/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.
NestedSubspacesn'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
Orbiterest désormais utilisable dans les contextesSubspaceComposableet associe les Orbiters à leur parent composable le plus proche basé surSubspaceLayout. - Introduction de
LayoutCoordinatesAwareModifierNodepour 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
scaleWithDistanceau modificateur movable. LorsquescaleWithDistanceest 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
SessionCallbackProviderau profit deSpatialCapabilities.
Autres changements
minSDKréduit à 24. Toutes les API Jetpack XR continuent de nécessiter l'API 34 au moment de l'exécution.OrbiterLes constructeursEdgeOffset.inner,EdgeOffset.outeretEdgeOffset.overlapne 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
SubspaceSemanticsInfodansMeasurableLayout. - Changement de nom :
SubspaceModifierElementdevientSubspaceModifierNodeElement.
Corrections de bugs
- Correctifs pour stabiliser l'ordre des
SubspaceModifier.SubspaceModifierdevrait 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,SpatialBoxetSpatialLayoutSpacer. Utilisez desSubspaceModifierpour 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:SpatialElevationLevelpeut ê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.currentpour déterminer les API compatibles avec l'environnement actuel.isSpatialUiEnabled: éléments d'interface utilisateur spatiaux (par exemple, SpatialPanel)isContent3dEnabled: objets 3DisAppEnvironmentEnabled: l'environnementisPassthroughControlEnabled: indique si l'application peut contrôler l'état de passthrough ou nonisSpatialAudioEnabled: 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_UNDERSTANDINGdans le fichier AndroidManifest. - Lorsqu'une application se lance directement dans l'espace Full Space à l'aide de la propriété
PROPERTY_XR_ACTIVITY_START_MODEdans 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.