Jetpack Compose pour XR
| Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
|---|---|---|---|---|
| 22 octobre 2025 | - | - | - | 1.0.0-alpha08 |
Déclarer des dépendances
Pour ajouter une dépendance sur 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-alpha08" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha08" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha08") }
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-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. La version 1.0.0-alpha08 contient ces commits.
Modifications apportées à l'API
- Modification de
ResizePolicypour accepteronResizeStart,onResizeUpdateetonResizeEnd. (I7e21f)
Correction de bugs
- Empêche le plantage lors de la destruction d'une activité avec un sous-espace. (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. La version 1.0.0-alpha07 contient ces commits.
Modifications apportées à l'API
- Amélioration des KDocs pour
SpatialMainPanel. (I27b70, b/444467891) - Ajout 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'arrangement familières de Compose 2D, y comprisStart,End,Center,SpaceBetween,SpaceAroundetSpaceEvenly, avec une prise en charge complète des 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écurité des types et la facilité d'utilisation des interfaces d'extension, telles queCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(interne) (Iede00, b/440599394, b/440599394)
- Supprimer la restriction
SpatialExternalSurface(I33315, b/439646773) - Introduisez
SubspaceModifierdans les composables Subspace et remplacez le paramètre de contraintes parSubspaceModifieravecSubspaceModifierslié à la taille. SiallowUnboundedSubspaceest défini sur "true", les sous-espaces peuvent toujours avoir des contraintes illimitées. (Ib06e6, b/433331675) - Obsolescence de
SubspaceModifiersdéplaçable et redimensionnable maintenant queDragPolicy()etResizePolicy()font partie des APISpatialPaneletSpatialExternalSurface(I397bf, b/437924639) - Ajout de la prise en charge de
LayoutDirectiondans les mises en page spatiales. Les composables utilisantSpatialAlignmentpositionnent 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,depthInSubspaceModifiersqui 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. La version 1.0.0-alpha06 contient ces commits.
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. La version 1.0.0-alpha05 contient ces commits.
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 pressionSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Mettez à jour
minimumPanelDimensionavec une nouvelle taille de dimension par défaut deDimensions(0.1f, 0.1f, 0.1f)en raison de sa représentation en mètres. (Ib852a) - Les sous-espaces et les orbiteurs conservent désormais leur état interne dans l'espace personnel et lorsque l'application est en arrière-plan. En mode d'affichage restreint, Subspace configure toujours sa scène en vue du passage au mode d'affichage complet. (I40317, b/416037751)
SpatialDialogsconservera désormais son état lorsque l'application est en arrière-plan. (I6aa56)ApplicationSubspacehérite 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 de mauvaise utilisation des API composables. (I427aa, b/424864286) - Les sous-espaces et
ApplicationSubspacesont désormais contraints parrecommendedContentBoxInFullSpace. Auparavant, il était limité par le champ de vision deSpatialUser. (I41015, b/423074142) - Mise à jour de
SpatialElevationpour utiliser la taille minimale et ne plus utiliser la taille codée en dur (I2dbe6, b/427785338) - Mettez à jour la façon dont nous masquons le
SpatialAcitivityPanelpour qu'il se mette à 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
PlaceableXR a été renomméSubspacePlaceablepour le distinguer duPlaceablede Compose. (I74874) - Suppression des paramètres Orbiter et ajout de
shouldRenderInNonSpatialen tant que nouveau paramètre. De plus, supprimez la classeEdgeOffsetet ajoutezorbiterOffsetTypeen tant que nouveau paramètre pour consolider les fonctionsOrbiter(). Nous avons également renomméOrbiterEdgeenContentEdge. (Iebf3d) Measurablea été renomméSubspaceMeasurablepour différencier le type du typeMeasurablede Compose. (I9726c)MeasureResultrenommé enSubspaceMeasureResult(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
SpatialExternalSurface, changement de nom deContentSecurityLevelenSurfaceProtection(I3c460, b/420982808) - Fourni un constructeur surchargé pour le modificateur déplaçable qui permet l'ancrage. (Ic0c70)
- Ajout d'un fournisseur de position pour les info-bulles. Les développeurs peuvent désormais contrôler si l'info-bulle est placée au-dessus, en dessous, à gauche ou à droite de l'ancrage. Ajoutez une API qui accepte une forme pour les carats, afin de pouvoir fournir des formes plus personnalisées. (Ie513c, b/374766087, b/418854637)
- Suppression de
CoreEntityen tant quePublishedApi(Ifee05)
Correction de bugs
- Résolution du problème qui entraînait le clignotement de
SpatialDialoglors du rendu. (Ife73c, b/401619909) - Correction d'un problème qui empêchait
SpatialDialogde masquer le panneau d'activité. (I8ca6c, b/367442109) - Correction du problème d'affichage de certains contenus dans la boîte de dialogue XR (I17cd5, b/418062437)
- Résolution du problème où
SpatialPopupétait fermé lorsque l'utilisateur cliquait sur le contenu. (If262c, b/417245722) - Correction du problème qui empêchait le redimensionnement correct de SpatialPanel à 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 du problème de non-affichage 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. La version 1.0.0-alpha04 contient ces commits.
Nouvelles fonctionnalités
- Ajout de l'interface
CompositionLocalConsumerSubspaceModifierNodepour permettre aux typesSubspaceModifierpersonnalisés d'accéder aux valeurs locales de composition. - Ajout d'une nouvelle API
SpatialPanelqui suit le style d'implémentationAndroidViewet rend obsolète l'APIViewBased SpatialPanelprécédente. - Ajout de l'objet compagnon
VolumeConstraints.Unboundedqui représente les contraintes illimitées. - Ajout de
SubspaceModifier.onPointSourceParamspour autoriser 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 la largeur et de la 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 contour progressif. - Ajout d'un 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 avec le niveau d'API 34 ou supérieur. (Iae0f8) - Les projets publiés avec Kotlin 2.0 nécessitent KGP 2.0.0 ou version ultérieure pour être utilisés. (Idb6b5)
- La gestion du retour fonctionne désormais sur les panneaux spatiaux sans activités intégrées. Pour que la gestion du retour fonctionne, vous devez spécifier
android:enableOnBackInvokedCallback="true"dans le fichier manifeste Android. - La gestion du retour en arrière fonctionne désormais sur les boîtes de dialogue spatiales. Pour que la gestion du 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 dimensionner 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é à l'aide du paramètre
elevation. - Le sous-espace peut désormais être limité par le champ de vision de
SpatialUseren largeur et en hauteur par défaut. 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 de nouveaux rappels
onMoveStartetonMoveEndau modificateurMovable. Les rappelsonMoveStartetonMoveEndsont appelés lorsque l'utilisateur commence et arrête de déplacer un composable de sous-espace avec le modificateur movable. - Le paramètre
namea été supprimé des API spatiales telles queSpatialRowetSpatialPanel. Pour déboguer les arbres de composition spatiale, utilisez plutôtSubspaceModifier.testTag. - Suppression d'une surcharge non acceptée 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 détachés ou en cours de détachement. - 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 barre de titre lorsqu'ils sont exécutés sur une image système aussi récente.- Les modificateurs alpha et d'échelle sont désormais cumulables et multiplient leurs valeurs pour obtenir la valeur alpha ou d'échelle finale appliquée.
- Le rappel
onPoseChangedu modificateur Movable a été optimisé pour permettre un mouvement de pose plus fluide. - Les modificateurs déplaçables et redimensionnables exécutent désormais leurs rappels sur le thread principal pour s'assurer que les changements d'état déclenchent la recomposition.
- Ajout d'une 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. - Mise à jour des chaînes de modificateurs optimisées pour mieux réutiliser les modificateurs existants.
Correction de bugs
- Arrêt de l'assombrissement lorsqu'un
SpatialDialogs'affiche. (Ic4594) - Les demandes de réorganisation effectuées lorsque les nœuds de modificateur sont détachés seront 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, directement ou lors d'un calcul de mise en page, par exemple un calculSpatialRow/SpatialColumn. Le panneau sera désormais masqué. Notez que ce correctif s'applique spécifiquement aux plantages lors de la phase de mise en page. Le redimensionnement du panneau à zéro via l'interaction de l'utilisateur sera traité séparément. Le panneau masqué ne comporte pas d'affordances d'UI. - Correction du problème lié à
maintainAspectRatiodu modificateur redimensionnable. Le format doit maintenant être conservé. - Correction d'un problème lié aux sous-espaces imbriqués, qui étaient mal positionnés pour une seule frame.
- Correction d'un problème où les angles arrondis n'étaient parfois pas appliqués lorsqu'ils auraient dû l'être.
NestedSubspacesn'apparaîtra plus pendant une seule image au mauvais endroit.
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. La version 1.0.0-alpha03 contient ces commits.
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. La version 1.0.0-alpha02 contient ces commits.
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 associera les Orbiters à leur composable parent le plus proche basé surSubspaceLayout. - Ajout de
LayoutCoordinatesAwareModifierNodepour autoriser les 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 déplaçable. LorsquescaleWithDistanceest activé, l'élément de sous-espace déplacé s'agrandit ou se rétrécit. Il conservera également toute échelle explicite qu'il avait avant le déplacement.
Modifications apportées à l'API
SessionCallbackProvidera été supprimé et remplacé parSpatialCapabilities.
Autres modifications
- Réduction de
minSDKà 24. Toutes les API Jetpack XR continueront de nécessiter l'API 34 au moment de l'exécution. - Les constructeurs
OrbiterEdgeOffset.inner,EdgeOffset.outeretEdgeOffset.overlapne sont plus des méthodes@Composable, ce qui leur permet d'être utilisés 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 la commande
SubspaceModifier.SubspaceModifierdevrait se comporter 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
Première version développeur de Jetpack Compose for XR. Utilisez des concepts Compose familiers tels que les lignes et les colonnes pour créer des mises en page d'UI spatiales dans XR, que vous portiez une application 2D existante vers XR ou que vous créiez une application XR à partir de zéro. Cette bibliothèque fournit des composables de sous-espace et spatiaux, tels que des panneaux spatiaux et des orbiteurs, qui vous permettent de placer votre UI existante basée sur Compose 2D ou Views dans une mise en page spatiale. Il présente 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. Cela permet de partager plus facilement 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 à réarchitecturer votre application.SpatialPanel : un panneau spatial est un composable de sous-espace qui vous permet d'afficher le contenu d'une application. Par exemple, vous pouvez afficher la lecture vidéo, des images fixes ou tout autre contenu dans un panneau spatial.
Orbiteur : un orbiteur est un composant d'UI 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 les entités SceneCore, telles que les 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 lesSubspaceModifierpour personnaliser votre mise en page.Composants d'UI spatiale : ces éléments peuvent être réutilisés dans votre UI 2D. Leurs attributs spatiaux ne seront visibles que lorsque les fonctionnalités spatiales seront activées.
SpatialDialog: le panneau recule légèrement en profondeur Z pour afficher une boîte de dialogue surélevée.SpatialPopUp: le panneau recule légèrement en profondeur Z pour afficher un pop-up surélevé.SpatialElevation:SpatialElevationLevelpeut être défini pour ajouter de l'altitude.
SpatialCapabilities : les capacités spatiales peuvent changer lorsque les utilisateurs interagissent avec votre application ou le système, ou peuvent même être modifiées par votre application elle-même (par exemple, en passant à l'espace restreint ou à l'espace complet). Pour éviter tout problème, votre application doit rechercher
LocalSpatialCapabilities.currentafin de déterminer quelles API sont compatibles dans l'environnement actuel.isSpatialUiEnabled: éléments d'UI spatiaux (par exemple, SpatialPanel)isContent3dEnabled: objets 3DisAppEnvironmentEnabled: environnementisPassthroughControlEnabled: indique si l'application peut contrôler l'état de la vue traversanteisSpatialAudioEnabled: 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 suivante
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>afin de pouvoir compiler et exécuter 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 en mode d'affichage complet à l'aide de la propriété
PROPERTY_XR_ACTIVITY_START_MODEdans son fichier manifeste, les activités/applications sont initialement ouvertes en mode d'affichage restreint avant de passer en mode d'affichage complet. - Les fichiers glTF dans les composables Volume peuvent initialement clignoter au mauvais emplacement.
- L'utilisation d'un SpatialDialog dans un panneau qui a été déplacé de manière significative poussera le contenu dans la mauvaise direction.