Jetpack Compose per XR
| Ultimo aggiornamento | Release stabile | Candidato per la release | Release beta | Release alpha |
|---|---|---|---|---|
| 21 ottobre 2026 | - | - | 1.0.0-beta02 | - |
Dichiara le dipendenze
Per aggiungere una dipendenza da XR Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per
la tua app o il tuo modulo:
Alla moda
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") }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per saperne di più, consulta la documentazione di Issue Tracker.
Versione 1.0
Versione 1.0.0-beta02
21 ottobre 2026
androidx.xr.compose:compose:1.0.0-beta02 e androidx.xr.compose:compose-testing:1.0.0-beta02 sono state rilasciate. La versione 1.0.0-beta02 contiene questi commit.
Modifiche alle API
- Le librerie ora hanno come target Kotlin 2.2 e richiedono kotlinc 2.2 (I82396, b/498369605)
- Il parametro
halfLifeMsdiFollowMode.soft()è stato rinominato inhalfLifeMillis. (I39187) - Convertito
PitchLimitsin un@JvmInline value class, comprimendo due float in unLongper eliminare le allocazioni di oggetti. (Id43c3) - Aggiunto un nuovo parametro per
FollowMode.soft: parametrihalfLifeMs,startDelayestartThresholds. Il parametrodurationMsè stato rimosso perché non è più necessario durante la transizione da un algoritmosmoothStepa un algoritmoexponentialDecay. (If0140) - Rimuovi l'overload
SpatialActivityPaneldeprecato. Utilizza invece l'overload diSpatialActivityPanelche accetta unSpatialActivityPanelController. (I5abc3) - Attiva le transizioni tra contenuti componibili 3D e 2D all'interno di un'attività in
FullSpaceMode. Questa modifica è controllata daSpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237) - È stato esposto l'overload sperimentale
Subspaceche accetta un parametroFollowTargetper supportare i contenuti seguenti. (Iec1a9) - Rimuovi i modificatori spostabili ritirati. Utilizza invece il nuovo modificatore movable che accetta il nuovo
MovePolicycome parametro. (Ib135d) - Rimuovi
DragPolicydeprecato. Usa invece il descrittoreSubspaceModifier.movable(). (I108d4) - I sovraccarichi stateless
SlidereRangeSlidersono stati ritirati a favore delle loro versioni stateful. Abbiamo rinominatoactiveRangeStarteactiveRangeEndinRangeSliderStateinstartValueeendValue, ritirando le precedenti API Slider sperimentali e non promosse conDeprecationLevel.HIDDEN. (If8995)
Correzioni di bug
- Risolto il problema
RotateToLookAtUserintroducendoposeInActivitySpaceper garantire il calcolo corretto della posa per tutti i tipi di sottospazio, inclusi quelli collegati ad ancoraggi o utenti.Ica367b - È stato corretto l'arresto anomalo di Constraints quando Orbiter è collegato a pannelli di grandi dimensioni (I8c4bf)
- È stato corretto un bug in
SubspaceLayoutNodeper cuiremoveAll()causava allocazioniArrayListnon necessarie. Sono state inoltre migliorate le prestazioni di calcolo della profondità. I34a10a - La dipendenza
androidx.lifecycle:lifecycle-runtimeè stata aggiornata alla versione 2.10.0. Questa versione è necessaria per eseguire i controlli lint del runtime del ciclo di vita in bundle con AGP versione 9.5.0-alpha04 o successive. (I99bfd, b/556807521) - Miglioramento dei kdoc relativi a
AudioOutputProviderper evidenziare che non deve essere riutilizzato con più istanzeExoPlayer(I6b18e) - Fix minor kdoc spelling and grammar issues (Id3ba6)
Problemi noti
- Questa versione di
androidx.xr.composeha una dipendenza daandroidx.xr.scenecore:1.0.0-rc01, che ha una perdita di memoria nota. Nella configurazione di compilazione, puoi eseguire l'override esplicito della dipendenzaSceneCorealla versione1.0.0, che include una correzione per la perdita di memoria.
Versione 1.0.0-beta01
23 settembre 2026
androidx.xr.compose:compose:1.0.0-beta01 e androidx.xr.compose:compose-testing:1.0.0-beta01 sono state rilasciate. La versione 1.0.0-beta01 contiene questi commit.
Modifiche alle API
DragPolicydeprecato rimosso. Usa invece il descrittoreSubspaceModifier.movable(). (I108d4)- Rimosso l'elemento deprecato
ResizePolicye i relativi utilizzi inSpatialPaneleSpatialExternalSurface. Rimuovere una funzioneSubspaceModifier.resizabledeprecata. Utilizza invece il nuovoSubspaceModifier.resizablecon un nuovoResizePolicy. (I59e6b) - Aggiunto il parametro
isPitchUpdateEnabledper consentire l'attivazione o la disattivazione del monitoraggio del tono in modo indipendente. (Ie9e86) - È stata rimossa la possibilità di valori nulli di
pitchLimitsed è stato rinominatoPitchLimits.UNCONSTRAINEDinPitchLimits.FullRange. (I0154f) ExposedDropdownMenuora è una funzione di estensione suExposedDropdownMenuBoxScopeanziché un membro. Potresti dover aggiornare il codice con una nuova importazione. (Ie8a65)- Rimossa la classe
SurfaceProtectiondeprecata. Usa invece il descrittoreSpatialExternalSurfaceProtection. (Iab2c6) - La funzione Orbiter che accetta un
OrbiterPoseProviderè stata ritirata a favore di quella che utilizzaSpatialAlignment. (I4d12b) SpatialActivityPanelora richiede unSpatialActivityPanelController(creato un'istanza utilizzandorememberSpatialActivityPanelController) per avviare e gestire le attività incorporate. (Id25c6)- È stato rimosso il parametro
upDirectiondarotateToLookAtUsere sono stati aggiunti i parametri dei vincoli di rotazione (isYawUpdateEnabledepitchLimits). (I1370a)
Correzioni di bug
- Risolti vari problemi relativi a
InteractionPolicy. Si verificava un arresto anomalo se un evento di input si verificava proprio quando il Composable o l'elemento secondario (ad esempio un Orbiter) avviava una sequenza di eliminazione. Risolve anche un problema per cui un elemento secondario riceveva eventi di passaggio del mouse. (Ifc477) - Dimensioni del riquadro ridotte in
RotateToLookAtUserActivityper evitare il clipping sui dispositivi con FOV più piccolo. (I8d672)
Problemi noti
- Esiste un problema con i riquadri di Compose XR per cui la creazione di molti riquadri in una singola attività potrebbe causare un danneggiamento di ciò che viene visualizzato anche dopo la distruzione dei riquadri.
Versione 1.0.0-alpha17
12 agosto 2026
androidx.xr.compose:compose:1.0.0-alpha17 e androidx.xr.compose:compose-testing:1.0.0-alpha17 sono state rilasciate. La versione 1.0.0-alpha17 contiene questi commit.
Modifiche alle API
- Rimuovi la classe di valore
Meter, che viene sostituita davirtualPixelDensityinScenecore. (I690ee) - L'API
SpatialGltfModelè ora sperimentale e deve essere attivata per l'utilizzo. (I4557e) - Rendi
systemridimensionabile e nullable (Ib0093) Densityesposto inSubspaceSemanticsInfoper i test. (I2e826)- Rinomina l'opzione predefinita
ResizePolicyinsysteme aggiungi una nuova opzioneDefaultsenza parametri (Ic8b16) - Contrassegna
FollowTargetcome sperimentale. L'intera APIFollowingSubspaceè ora sperimentale. (Id4ee3) - Rimuovi le API
GltfAnimation(Ic2894) - Il metodo
MovePolicy.default()parametrizzato è stato rinominato inMovePolicy.system(). È stata introdotta una proprietàval MovePolicy.Defaultper rappresentare il comportamento di movimento predefinito standard. (Iedcc9) - Expand
ExperimentalMoveAnchorPolicyopt in requirements toPlaneSemanticandPlaneOrientation(Ief927) - Rimuovi
resetMinsdaVolumeConstraints.offset(Ib2f2f) - Rimossa la funzione
SceneCoreEntitySizeAdapterdeprecata. (Ib6722) - Rimosso l'overload
Subspacedeprecato conallowUnboundedSubspace. (I8e97f) - Rimosso l'overload del modificatore di semantica deprecato. (I4ac10)
Correzioni di bug
- Risolto il problema per cui gli elementi secondari di un
Composablecon unInteractionPolicycollegato attivavano eventi di input (Icdba6)
Versione 1.0.0-alpha16
15 luglio 2026
androidx.xr.compose:compose:1.0.0-alpha16 e androidx.xr.compose:compose-testing:1.0.0-alpha16 sono state rilasciate. La versione 1.0.0-alpha16 contiene questi commit.
Modifiche alle API
- Rimuovi
ComponentOverrideAPI (I820c4) - Le API
GltfAnimationeSpatialGltfModelAnimationsono state contrassegnate come sperimentali. Alcune proprietà sono state trasformate in getter. (I8d689, b/524771027) - È stato corretto il comportamento della densità complessiva stabilendo che la conversione tra metri e pixel sia costante. Meter.kt è stato ritirato, ora è possibile utilizzare
Session.scene.virtualPixelDensitycome alternativa. (I122ff, b/430097855, b/474168798) - Aggiorna il modificatore resizable per utilizzare un
ResizePolicyanziché due modificatori (I7fb0f, b/496257436, b/519672992) - Aggiunto un parametro tolerance:
Dp = Dp(0.5f)a tutte le asserzioni di uguaglianza di posizione e dimensione in rappresentazione in virgola mobile pubbliche inSubspaceAssertions.kt. Il comportamento di tolleranza predefinito (0.5.dp) è completamente documentato. (I266cb, b/521491915) - Aggiunto l'overload spostabile con il parametro
movePolicye ritiratitransformingMovableemovable(Ic88c1, b/481781189) - Sono state aggiunte nuove varianti non interattive dell'elemento dell'elenco standard e dell'elemento dell'elenco segmentato che seguono le specifiche di Material Expressive. La versione non espressiva è stata ritirata. (Ide4de, b/491994186)
- Per Subspace, il parametro
allowUnboundedSubspaceè ora deprecato e nascosto. Il comportamento illimitato ora deve essere ottenuto utilizzandoSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) sul modificatore Subspace. Il parametroallowUnboundedSubspaceè stato rimosso daFollowingSubspace. (Ia72ae, b/433624021) Session.createè stato convertito in una funzione di sospensione. (I5d27f)- È stato aggiunto
SubspaceModifier.spatializedAudioOutput, che consente di spazializzare la riproduzione audio tramiteExoPlayero tramite unSoundEffectPlayer(I46697, b/489421980, b/497867019) - Aggiornati
ComponentActivity.requestHomeSpace()erequestFullSpace()per restituireSpaceRequestResultper la verifica dello stato. (If1672) - Aggiornato
AnchorEntityin modo che venga chiamatoAnchorSpace(Ifa95e, b/513619219) - Metodo
fromResourcenon limitato daSpatialGltfModelSource(I1f5a1, b/503047416) - I membri di
SubspaceSemanticsMatchersono pubblici: la proprietàdescription, i metodi di factory companion (expectValue,keyIsDefined,keyNotDefined), le funzioni membro (matches,matchesAny) e gli operatori (and,or,not). (I972a4, b/460427288) - Aggiornamento di
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfo,SubspaceSemanticsModifierNodeper utilizzare i tipi di semantica spaziale selezionati. (I80dea, b/460427288) positionè stato rinominato inaligninSpatialAlignmente sono stati rimossi i singoli metodi di offset direzionale a favore di un'APIalignunificata. (I9bdb2, b/479805937)- Sono state rimosse le API della modalità Spazio deprecate da
SpatialConfiguration. (I1ef5c, b/458712461) - Introdotta
SubspaceSemanticsConfiguration. Questa è una configurazione delle proprietà semantiche per un nodo spaziale. Questa classe espone in modo sicuro i metodi di query per la semantica 3D senza divulgare le funzionalità semantiche 2D di base ai consumer esterni. (Id025e, b/460427288) - È stato introdotto
SubspaceSemanticsPropertyReceiver: un wrapper dedicato che limita le proprietà del container di layout 3D ai campi validi (inizialmentetestTagecontentDescription). (I5cf5c, b/460427288)
Correzioni di bug
- Aggiornato il modificatore semantico
hasContentDescriptionin modo che utilizzi per impostazione predefinita la corrispondenza delle sottostringhe. (I08214) - È stato aggiunto l'elemento
FollowBehavior.ExponentialDecay()con restrizioni, che fornisce un comportamento di tracciamento fluido guidato dalla fisica elastica. (I7449c, b/485639909, b/500493335)
La maggior parte delle API sarà interessata da questa modifica. Nello specifico, LocalSession CompositionLocal e tutti i CompositionLocals che dipendono da LocalSession (ad es. LocalSpatialConfiguration, LocalSpatialCapabilities e così via) ora verranno risolti in null o nelle relative versioni non XR prima dell'inizializzazione di Session.
Una volta che Session è disponibile, la ricomposizione verrà attivata con lo stato corretto. (I0cfa4, b/514712835, b/514712835)
- Documentazione chiarita per
ComponentActivity.requestHomeSpaceeComponentActivity.requestFullSpacein merito al comportamento di sospensione, annullamento e contemporaneità. Aggiornamento dei test per verificare la propagazione diCancellationException. (I22f75, b/493289528)
Versione 1.0.0-alpha15
17 giugno 2026
androidx.xr.compose:compose:1.0.0-alpha15 e androidx.xr.compose:compose-testing:1.0.0-alpha15 sono state rilasciate. La versione 1.0.0-alpha15 contiene questi commit.
Modifiche alle API
- Ritirato
ResizePolicye il vecchio modificatore ridimensionabile, sostituendolo con un nuovo sovraccaricoSubspaceModifier.resizableeSubspaceModifier.transformingResizable. (I9e4bc) - API
SpatialGltfModelaggiornate: aggiunto il supporto per il caricamento di modelli dalle risorse tramiteSpatialGltfModelSource.fromResource. Velocità rinominata inplaybackSpeedinSpatialGltfModelAnimatione aggiunto un metodo resume().SpatialGltfModelStatus.Loaded e Loading ora sono oggetti. (I523de) rotateToLookAtUserè stata contrassegnata come API sperimentale. (I86c16)- La variabile protetta
targetCurrentPoseè stata spostata e rinominata in variabile localecurrentTargetPoseMeter. (Ia557c) - Aggiorna i kdoc
SpatialPaneleSpatialExternalSurfaceper includere la posizione in cui viene eseguito il rendering dell'oggetto all'interno delle dimensioni del layout (I72104) - Logica di caricamento di
SpatialGltfModelincapsulata all'interno diSpatialGltfModelStatee comportamento in caso di errore chiarito. (Ibe98b) - Chiarito
depthinSubspaceModifer.sizekdocs (I0f84f)
Versione 1.0.0-alpha14
19 maggio 2026
androidx.xr.compose:compose:1.0.0-alpha14 e androidx.xr.compose:compose-testing:1.0.0-alpha14 sono state rilasciate. La versione 1.0.0-alpha14 contiene questi commit.
Modifiche alle API
- È stato introdotto
transformingMovableper il movimento 3D predefinito gestito dal sistema ed è stato introdotto un nuovo overload permovableper gestire i comportamenti di movimento personalizzati. (I50960) - Il campo
SpatialGltfModel.fromData()è stato rimosso. (I4d083) - È stata aggiunta una nuova interfaccia del nodo modificatore,
SubspaceMeasuredSizeAwareModifierNode, che fornisce un callbackonRemeasureddopo la fase di misurazione.SubspaceLayoutAwareModifierNodeora estende questa nuova interfaccia. Il modificatoreonSizeChangedè stato aggiornato per utilizzareonRemeasured, garantendo che il callback venga attivato subito dopo la misurazione, non dopo il posizionamento. (Iafbae) InteractionPolicyaggiornato aInterface(I0ff30)- Aggiornamento di Compose
compileSdkall'API 37. Ciò significa che, se utilizzi Compose, è richiesta una versione minima di AGP 9.2.0. (Id45cd) - Aggiornamento di
Sizekdoc (Iefa9a)
Versione 1.0.0-alpha13
6 maggio 2026
androidx.xr.compose:compose:1.0.0-alpha13 e androidx.xr.compose:compose-testing:1.0.0-alpha13 sono state rilasciate. La versione 1.0.0-alpha13 contiene questi commit.
Modifiche alle API
- L'API Orbiter è in attesa di ulteriori modifiche, pertanto ti consigliamo di eliminare le notifiche di ritiro per gli Orbiter e di tenere d'occhio le modifiche agli Orbiter nelle prossime release.
- Chi utilizza
SceneCoreEntityper eseguire il rendering dei glTF deve assicurarsi di passaresession.scene.activitySpaceal parametroparentdella chiamataGltfModel.createper garantire il rendering dei glTF. - Aggiunta dell'API
SpatialGltfModelper consentire agli sviluppatori di aggiungere Gltf alle loro app Compose for XR. Gli sviluppatori possono anche eseguire query su animazioni e nodi all'interno dei loro modelli glTF. (I8b542, b/495422586) - Modifica
SceneCoreEntitySizeAdapterda classe a interfaccia (I5a784, b/475292310) SurfaceProtectionrinominato inSpatialExternalSurfaceProtection. AggiornatiSpatialExternalSurfacekdoc (Ifad0a, b/485231082)- Depreca
currentWindowAdaptiveInfoe introduci la versione 2 (I40ecf, b/424442112) - Il modificatore
resizableè ora pubblico e applicabile ai gruppi (ad es.SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - Il modificatore
movableè ora pubblico. Questo modificatore funziona bene, al momento, perSpatialPanelseSpatialExternalSurface; tuttavia, l'intenzione è di supportarli bene per tutti iSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitioneSpatialExitTransitioncontrassegnati come@Immutable(If1710, b/487757837)- L'API
SpatialGltfModelè contrassegnata come limitata per questa release in attesa di ulteriori test. (Ibf003, b/466090694) DeviceTrackingMode.LAST_KNOWNè stato rinominato inSPATIAL_LAST_KNOWN(con un fallback deprecato), è stato aggiuntoINERTIAL_LAST_KNOWNper il monitoraggio 3DoF ed è stato aggiuntoTRACKING_DEGRADEDaTrackingState. (Ie661c, b/445466590)- Rimozione di
SpatialLayoutSpacerdeprecato (I7b36c) - Rimozione dell'API di spaziatura interna deprecata (If1886)
floatRangeaggiunto ai valori di bias. Valore predefinito rimosso perLayoutDirection(I9d74e)
Correzioni di bug
- Sono stati aggiunti esempi di codice e documentazione KDoc per
SpatialColumn,SpatialRoweSpatialCurvedRow. (Iaf54f, b/495777633)
Versione 1.0.0-alpha12
25 marzo 2026
androidx.xr.compose:compose:1.0.0-alpha12 e androidx.xr.compose:compose-testing:1.0.0-alpha12 sono state rilasciate. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Aggiungi l'API
SpatialGltfModele le APISpatialGltfModelAnimationper eseguire il rendering dei glTF e controllare le animazioni.SpatialGltfModelStateè stato modificato inAutoCloseable, ora dovrà essere chiuso per liberare le relative risorse. (I11fde, b/466065486, b/481379924). Tuttavia, l'APISpatialGltfModelè contrassegnata come limitata per questa release in attesa di ulteriori test. (Ibf003, b/466090694) - È stato aggiunto un overload vuoto deprecato per
SubspaceModifier.rotate. (Idceb6) - La funzione
SpatialSmoothFeatheringEffectè stata rinominata inspatialSmoothFeatheringEffecte spostata in un modulo di disegno. Il valore di sfumatura predefinito diSpatialExternalSurfaceè stato aggiornato a null, che imita la precedente funzionalità ZeroFeatheringEffect. (I5fdaa, b/460426800) - Contatto rimosso:
onPointSourceParamsAvailable. Nel prossimo futuro sarà disponibile un'API di spazializzazione audio diversa. (I86507, b/458513439) - Aggiunto il comportamento RTL per i modificatori di sottospazio di offset. È stato aggiunto anche
absoluteOffsetper ignorare la direzione del layout. (I30e4b, b/474409165)
Versione 1.0.0-alpha11
25 febbraio 2026
androidx.xr.compose:compose:1.0.0-alpha11 e androidx.xr.compose:compose-testing:1.0.0-alpha11 sono state rilasciate. La versione 1.0.0-alpha11 contiene questi commit.
Nuove funzionalità
- Aggiunta del parametro
SuperSamplingaSpatialExternalSurfaces(Icd4d1)
Problemi noti
- Un problema con
SurfaceEntityin SceneCore può causare l'arresto anomalo delle app durante la creazione di istanze diSpatialExternalSurface. Questo problema è stato risolto inandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12e nelle versioni successive. Le app interessate devono essere aggiornate all'ultima versione.
Modifiche alle API
- Modifiche al padding del modificatore Subspace per la consapevolezza della direzione del layout. (I53e25)
SpatialCapabilitiesè ora sigillato e non può essere esteso. (I07aef)- Le API
SpatialRoweSpatialColumnche accettano un parametroSpatialAlignmentgenerico sono deprecate; utilizza invece le API che accettanoverticalAlignmentohorizontalAlignmentrispettivamente perSpatialRoweSpatialColumn. (Iec390) - Combinazione delle API di funzione
SubspaceLayoutdi sovraccarico (Idd30a) SubspaceModifier.lookAtUserè stato rinominato inrotateToLookAtUsere il parametroupinupDirection. (Icafb8)SpatialRowè stata resa una funzione incorporata (Ia2f20)SpatialColumnè stata resa una funzione incorporata (I681be)- Rimossa l'API Billboard (Ib76cd)
Versione 1.0.0-alpha10
28 gennaio 2026
androidx.xr.compose:compose:1.0.0-alpha10 e androidx.xr.compose:compose-testing:1.0.0-alpha10 sono state rilasciate. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche alle API
- Rimozione dell'API deprecata -
ApplicationSubspace(Ia6596, b/468345186) SpatialShapeè stato aggiornato a un'interfaccia sigillata (I7e3f5, b/460426800)- Rimozione delle API deprecate in
SpatialAlignment. (Ib0b61, b/468011887) - Ritiro di
SpatialLayoutSpacere introduzione diSpatialSpacer. (I2ebf3, b/466071383) - Aggiornata l'API
UserSubspaceper sostituire la terminologia "lazy locking" con "soft locking". (I9ded1, b/464035984)
Versione 1.0.0-alpha09
3 dicembre 2025
androidx.xr.compose:compose:1.0.0-alpha09 e androidx.xr.compose:compose-testing:1.0.0-alpha09 sono state rilasciate. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
- Aggiunta di modificatori
LookAtUsere Billboard che consentono ai contenuti di essere sempre rivolti verso l'utente. (I49b99) - Aggiunge la possibilità di impostare un
InteractionPolicysuSpatialExternalSurfaceseSpatialPanels, consentendo il rilevamento di clic e altri eventi di input 3D. (Iae155) - Aggiunto l'overload del modificatore di dimensioni e
requiredSizecon larghezza, altezza e profondità come valori Dp. (I92f79) - L'interfaccia
ParentLayoutParamsModifierora estendeDelegatableSubspaceNode. (I1a6d4) ApplicationSubspaceè deprecato a favore dell'API Subspace.- Il comportamento dell'API Subspace è stato modificato in modo da fornire un sottospazio a livello di applicazione solo con la posa e la scala consigliate.
- L'API
PlanarEmbeddedSubspaceè stata introdotta per fornire sottospazi incorporati in contesti 2D. (Id3343)
- Aggiunto il flag
shouldAutoInvalidateall'APISubspaceModifier.Node. (I93902) - Aggiunta
required(Size|Width|Depth|Height)Nelle API che consentono agli sviluppatori di limitare le dimensioni di un@SubspaceComposablea un intervallo specifico, ignorando i vincoli di misurazione in entrata dell'elemento principale. (Ifaa78) - È stato aggiunto
SubspaceModifier.onSizeChanged, che fornisce un callback semplice e mirato per consentire agli sviluppatori di reagire quando le dimensioni di un@SubspaceComposablecambiano. (I994f9) - Rimossa l'API Volume. L'API
SceneCoreEntitydeve essere utilizzata al posto dell'API Volume. (I4162b) - Suddividi
SubspaceLayoutModifierNode.requestRelayoutininvalidateMeasurement/invalidatePlacement. (I14805) - È stata aggiunta l'API
SpatialGltfModelche consente agli sviluppatori di eseguire il rendering dei glTF in Compose. (Icc91f) - È stata introdotta l'API componibile
SpatialGltfModelper eseguire facilmente il rendering dei glTF (Iade67)
Correzioni di bug
- È stato corretto un bug di layout in
SceneCoreEntity. Ora dovrebbe rispettare correttamente i suoi vincoli. (I11bb8) - I moduli jxr-compose sono stati ridotti a
Compile sdk = 34(I2d5db)
Versione 1.0.0-alpha08
22 ottobre 2025
androidx.xr.compose:compose:1.0.0-alpha08 e androidx.xr.compose:compose-testing:1.0.0-alpha08 sono state rilasciate. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- Modificato
ResizePolicyper accettareonResizeStart,onResizeUpdateeonResizeEnd. (I7e21f)
Correzioni di bug
- Evita l'arresto anomalo durante l'eliminazione di un'attività con un sottospazio. (I595a1)
Versione 1.0.0-alpha07
24 settembre 2025
androidx.xr.compose:compose:1.0.0-alpha07 e androidx.xr.compose:compose-testing:1.0.0-alpha07 sono state rilasciate. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- KDoc migliorati per
SpatialMainPanel. (I27b70, b/444467891) - È stato introdotto
SpatialArrangementper disporre gli elementi secondari lungo l'asse principale nei layout 3D comeSpatialRoweSpatialColumn. Questa nuova API offre opzioni di disposizione familiari di Compose 2D, tra cuiStart,End,Center,SpaceBetween,SpaceAroundeSpaceEvenly, con supporto completo per le direzioni di layout LTR e RTL. (I7db38, b/436289959) - È stata aggiunta un'interfaccia di base per
SubspaceModifier.Nodeper migliorare la sicurezza dei tipi e l'usabilità delle interfacce di estensione, ad esempioCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(interno) (Iede00, b/440599394, b/440599394)
- Sblocca
SpatialExternalSurface(I33315, b/439646773) - Introduci
SubspaceModifiernei componibili Subspace e sostituisci il parametro dei vincoli conSubspaceModifierconSubspaceModifiersrelative alle dimensioni. SeallowUnboundedSubspaceè true, i sottospazi possono comunque avere vincoli illimitati. (Ib06e6, b/433331675) - Ritiro di
SubspaceModifiersspostabile e ridimensionabile ora cheDragPolicy()eResizePolicy()fanno parte dell'APISpatialPaneleSpatialExternalSurface(I397bf, b/437924639) - È stato aggiunto il supporto di
LayoutDirectionnei layout spaziali. Il componibile che utilizzaSpatialAlignmentora posizionerà correttamente gli elementi sia nei contesti LTR che RTL. (I964bb, b/436300273) - Aggiungi i parametri Resizable e Movable alle API
Panelper assicurarti che questi comportamenti possano essere applicati solo ai container supportati. (Id491c) - Sono stati aggiunti
sizeIn,widthIn,heightIn,depthInSubspaceModifiersche ti consentono di impostare vincoli minimi e massimi esatti per larghezza, altezza e profondità. (I1af09, b/433330761)
Versione 1.0.0-alpha06
13 agosto 2025
androidx.xr.compose:compose:1.0.0-alpha06 e androidx.xr.compose:compose-testing:1.0.0-alpha06 sono state rilasciate. La versione 1.0.0-alpha06 contiene questi commit.
Correzioni di bug
- Ricrea
ComposeXrOwnerLocalsquando il proprietario del ciclo di vita viene eliminato. (9123ce1)
Versione 1.0.0-alpha05
30 luglio 2025
androidx.xr.compose:compose:1.0.0-alpha05 e androidx.xr.compose:compose-testing:1.0.0-alpha05 sono state rilasciate. La versione 1.0.0-alpha05 contiene questi commit.
Nuove funzionalità
- La classe di annotazione
SubspaceComposableè stata resa pubblica. (Ic2a34, b/399432430) - Due nuovi componibili
SpatialExternalSurfaceche rappresentano sfere a 180 e 360 gradi. (I40ef2, b/391705799) - Aggiunta di
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147) - È stata aggiunta l'API
SceneCoreEntityper migliorare l'interoperabilità traSceneCoree Compose for XR. (I50bb3, b/423020989) - È stata fornita l'API
GravityAlignedsubspaceper supportare la funzionalitàGravityAlignednon scalata (I07359)
Modifiche alle API
SpatialDialog()seguirà la configurazione della pressione diSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Aggiorna
minimumPanelDimensiona una nuova dimensione predefinita diDimensions(0.1f, 0.1f, 0.1f)a causa della sua rappresentazione in metri. (Ib852a) - I sottospazi e gli Orbiter ora manterranno il loro stato interno nello spazio della casa e quando l'app è in background. In modalità spazio Home, Subspace configurerà comunque la scena in preparazione del passaggio alla modalità spazio intero. (I40317, b/416037751)
SpatialDialogsora manterrà lo stato quando l'app è in background. (I6aa56)ApplicationSubspaceora erediterà la scala e la posizione consigliate dal sistema. (I4565f, b/418834194)- È stato aggiunto un messaggio di errore migliore e l'errore viene attivato prima quando viene utilizzato un
SubspaceComposablein un contesto nonSubspaceComposable. (Iee2ae, b/416484684) - Aggiornamento di
ExperimentalSubspaceVolumeApida Avviso a Errore perché gli avvisi vengono spesso trascurati quando si utilizzano in modo errato le API componibili. (I427aa, b/424864286) - Lo spazio secondario e
ApplicationSubspacesono ora vincolati darecommendedContentBoxInFullSpace. In precedenza, era limitato dal campo visivo diSpatialUser. (I41015, b/423074142) - Aggiorna
SpatialElevationper utilizzare la dimensione minima in modo da non utilizzare più la dimensione hardcoded (I2dbe6, b/427785338) - Aggiorna il modo in cui applichiamo lo scrim a
SpatialAcitivityPanelper aggiornarlo quando viene modificata una variabile chiave. (I0f64d, b/427999029) - Rimuovi
VolumeConstraints.Unboundede imposta i valori predefiniti dei vincoli sull'equivalente. (Ie24ec, b/407938414) SpatialFeatheringSizenon è più pubblico (I1c15b, b/399432430)PlaceableXR è stato rinominato inSubspacePlaceableper distinguerlo daPlaceabledi Compose. (I74874)- Rimozione delle impostazioni di Orbiter e aggiunta di
shouldRenderInNonSpatialcome nuovo parametro. Inoltre, rimuoveremo la classeEdgeOffsete aggiungeremoorbiterOffsetTypecome nuovo parametro per consolidare le funzioniOrbiter(). Inoltre,OrbiterEdgeè stato rinominato inContentEdge. (Iebf3d) - Il tipo
Measurableè stato rinominato inSubspaceMeasurableper differenziarlo dal tipoMeasurabledi Compose. (I9726c) - Rinomina
MeasureResultinSubspaceMeasureResult(I9f34d) - È stata rimossa l'API
setSubspaceContenta favore dell'utilizzo disetContentdi Compose con un componibileSubspace. (Ifff4c, b/421427391, b/421427391) MeasurePolicyè stato rinominato inSubspaceMeasurePolicy. (I37a9b, b/422553904)- Trasforma
SubspaceSemanticsInfoin un'interfaccia sealed perché non potremo aggiungere membri senza i valori predefiniti. (I372f9, b/423704068) - Documentazione di
SpatialExternalSurfaceaggiornata,ContentSecurityLevelrinominato inSurfaceProtection(I3c460, b/420982808) - È stato fornito un costruttore sovraccaricato per il modificatore mobile che consente l'ancoraggio. (Ic0c70)
- Sono stati aggiunti altri provider di posizione per i tooltip, in modo che ora gli sviluppatori possano controllare se il tooltip è posizionato sopra, sotto, a sinistra o a destra dell'ancora. Aggiungi un'API che accetta una forma per i cursori del testo, in modo da poter fornire più forme personalizzate. (Ie513c, b/374766087, b/418854637)
CoreEntitynon è piùPublishedApi(Ifee05)
Correzioni di bug
- È stato risolto il problema per cui
SpatialDialoglampeggiava durante il rendering. (Ife73c, b/401619909) - Risolve il problema per cui
SpatialDialognon poteva oscurare il riquadro Attività. (I8ca6c, b/367442109) - Risolto il problema per cui la finestra di dialogo XR non mostrava alcuni contenuti (I17cd5, b/418062437)
- Risolto il problema per cui
SpatialPopupveniva ignorato quando si faceva clic all'interno dei contenuti. (If262c, b/417245722) - Risolto il problema per cui, quando si concatenava
resizable().movable(), SpatialPanel non veniva ridimensionato correttamente in base alle nuove dimensioni. (I02ee3, b/422264230) - È stata corretta la sovrapposizione di
topBarcon il menu inSpatialComposeVideoPlayer(Id33bc, b/427168167) - È stato corretto il problema relativo al mancato rendering del raggio dell'angolo fisso. (I975fe, b/428261830)
Versione 1.0.0-alpha04
7 maggio 2025
androidx.xr.compose:compose:1.0.0-alpha04 e androidx.xr.compose:compose-testing:1.0.0-alpha04 sono state rilasciate. La versione 1.0.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stata aggiunta l'interfaccia
CompositionLocalConsumerSubspaceModifierNodeper consentire ai tipiSubspaceModifierpersonalizzati di accedere ai valori locali della composizione. - È stata aggiunta una nuova API
SpatialPanelche segue lo stile di implementazione di ComposeAndroidViewe rende deprecata l'APIViewBased SpatialPanelprecedente. - È stato aggiunto l'oggetto companion
VolumeConstraints.Unboundedche rappresenta i vincoli non limitati. - Aggiunta di
SubspaceModifier.onPointSourceParamsper consentire una sorgente audio spazializzata. - È stato aggiunto un
ApplicationSubspacepubblico, che offreVolumeConstraintsfacoltativi per definire un'area 3D in cui l'app può eseguire il rendering dei contenuti spaziali. Per impostazione predefinita, se non vengono specificati vincoli, il sottospazio sarà limitato dall'attuale campo visivo diSpatialUserin larghezza e altezza. Gli utenti possono fornire vincoli da utilizzare se non è possibile determinare il campo visivo. In caso contrario, vengono utilizzati i valori predefiniti di larghezza e altezza del campo visivo. - È stato aggiunto
SpatialExternalSurface, che può essere utilizzato per eseguire il rendering di contenuti stereoscopici.SpatialExternalSurfaceè personalizzabile con modificatori (ad eccezione di alpha) e un effetto di sfumatura dei bordi. - È stato aggiunto un nuovo modificatore di sottospazio
pointerHoverIconche consente agli utenti di impostare l'icona per il puntatore spaziale.
Modifiche alle API
- È stata rimossa la limitazione
RequiresApi(34)su tutti i pacchetti Jetpack XR. Questa limitazione era ridondante, poiché Jetpack XR è attualmente disponibile solo sui dispositivi con livello API 34 o superiore. (Iae0f8) - I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive per essere utilizzati. (Idb6b5)
- La gestione del pulsante Indietro ora funzionerà sui pannelli spaziali senza attività incorporate. Affinché la gestione del pulsante Indietro funzioni, devi specificare
android:enableOnBackInvokedCallback="true"nel file manifest Android. - La gestione del pulsante Indietro ora funzionerà nelle finestre di dialogo spaziali. Affinché la gestione del pulsante Indietro funzioni, devi specificare
android:enableOnBackInvokedCallback="true"nel manifest Android. - I
SpatialPanelbasati su Compose e su View ora possono essere ridimensionati in base ai loro contenuti. - Ora gli sviluppatori possono impostare i propri valori
SpatialElevationLevelpersonalizzati e non sono limitati ai livelli predefiniti. - Il livello di elevazione di Orbiter ora può essere personalizzato tramite il parametro
elevation. - Ora lo spazio secondario può essere limitato per impostazione predefinita dal campo visivo di
SpatialUserin larghezza e altezza. Se non è possibile determinare il campo visivo, vengono utilizzati i valori predefiniti di larghezza e altezza del campo visivo. - Sono stati aggiunti i nuovi callback
onMoveStarteonMoveEndal modificatoreMovable. I callbackonMoveStarteonMoveEndvengono chiamati quando l'utente inizia e termina lo spostamento di un composable di sottospazio con il modificatore movable. - Il parametro
nameè stato rimosso dalle API spaziali comeSpatialRoweSpatialPanel. Per il debug degli alberi di composizione spaziale, utilizza inveceSubspaceModifier.testTag. - È stato rimosso un overload non supportato di
SpatialPopupche ha solospatialElevationLevelecontent. Utilizza l'interfaccia che supportaonDimissRequest. - Il callback
onPoseChangedal modificatore Movable è stato rimosso. Usa invece il descrittoreonMove. SubspaceModifiersnon applicheranno più i loro effetti se sono scollegati o se sono in fase di scollegamento.- L'API
SpatialRowesistente è stata suddivisa inSpatialRoweSpatialCurvedRow. Se in precedenza utilizzavi il parametrocurveRadiusdiSpatialRow, ora utilizzaSpatialCurvedRow, che offre lo stesso comportamento. MainPaneleActivityPanelnon hanno più barre del titolo quando vengono eseguiti su un'immagine di sistema recente simile.- I modificatori di alfa e scala sono ora impilabili e moltiplicheranno i loro valori per il valore di alfa o scala finale applicato.
- Il callback
onPoseChangedel modificatore Movable è stato ottimizzato per eseguire un movimento di posa più fluido. - I modificatori movable e resizable ora eseguiranno i loro callback sul thread principale per garantire che le modifiche di stato attivino la ricomposizione.
- È stata aggiunta l'osservazione dello stato alle fasi di layout e misurazione per garantire che le modifiche dello stato in
SubspaceLayoutattivino il relayout. - Aggiornamenti della catena di modificatori ottimizzati per riutilizzare meglio i modificatori esistenti.
Correzioni di bug
- Interruzione della schermata quando viene mostrato un
SpatialDialog. (Ic4594) - Le richieste di modifica del layout effettuate mentre i nodi modificatori sono scollegati verranno ora ignorate.
- Sono state rimosse le fasi di rimpaginazione attivate dai modificatori Movable e Resizable.
- È stato corretto un arresto anomalo nel composable
MainPanel()che si verificava quando una delle dimensioni veniva impostata su zero, direttamente o durante un calcolo del layout, ad esempio un calcolo diSpatialRow/SpatialColumn. Il riquadro verrà invece nascosto. Tieni presente che questa correzione riguarda specificamente gli arresti anomali durante la fase di layout; il ridimensionamento del riquadro a zero tramite l'interazione dell'utente verrà gestito separatamente. Il riquadro nascosto non dispone di affordance dell'interfaccia utente. - Risolto il problema con
maintainAspectRatiodal modificatore ridimensionabile. Le proporzioni dovrebbero essere mantenute. - Risolto un problema relativo ai sottospazi nidificati che venivano posizionati in modo errato per un singolo frame.
- È stato risolto il problema per cui gli angoli arrotondati a volte non venivano applicati quando avrebbero dovuto.
NestedSubspacesnon verrà più visualizzato per un frame nella posizione errata.
Versione 1.0.0-alpha03
26 febbraio 2025
androidx.xr.compose:compose:1.0.0-alpha03 e androidx.xr.compose:compose-testing:1.0.0-alpha03 vengono rilasciati senza modifiche significative rispetto all'ultima versione alpha. La versione 1.0.0-alpha03 contiene questi commit
Versione 1.0.0-alpha02
12 febbraio 2025
androidx.xr.compose:compose:1.0.0-alpha02 e androidx.xr.compose:compose-testing:1.0.0-alpha02 sono state rilasciate. La versione 1.0.0-alpha02 contiene questi commit.
Nuove funzionalità
- Il riquadro Attività ora può oscurare i contenuti quando viene attivata una finestra di dialogo spaziale.
- L'API
Orbiterè ora utilizzabile nei contestiSubspaceComposablee collegherà gli Orbiter al componente principale componibile basato suSubspaceLayoutpiù vicino. - È stato introdotto
LayoutCoordinatesAwareModifierNodeper consentire modificatori personalizzati basati sul posizionamento. - Aggiunti i metodi del ciclo di vita di collegamento/scollegamento a
SubspaceModifier.Node. - Aggiunto
scaleWithDistanceal modificatore mobile. QuandoscaleWithDistanceè attivo, l'elemento del sottospazio spostato si espande o si riduce. Inoltre, manterrà l'eventuale scala esplicita che aveva prima dello spostamento.
Modifiche alle API
SessionCallbackProviderrimosso a favore diSpatialCapabilities.
Altre modifiche
- Ridotto
minSDKa 24. Tutte le API Jetpack XR continuano a richiedere l'API 34 in fase di runtime. - I costruttori
OrbiterEdgeOffset.inner,EdgeOffset.outereEdgeOffset.overlapnon sono più metodi@Composable, il che consente di utilizzarli in contesti non componibili. - Aggiorna i livelli di elevazione spaziale in modo che corrispondano alle specifiche UX più recenti.
- Implementa l'interfaccia
SubspaceSemanticsInfoinMeasurableLayout. SubspaceModifierElementrinominato inSubspaceModifierNodeElement.
Correzioni di bug
- Correzioni per stabilizzare l'ordinamento di
SubspaceModifier.SubspaceModifierdovrebbe comportarsi in modo più affidabile. I modificatori di offset, rotazione, scalabilità, spostamento e ridimensionamento ora dovrebbero essere utilizzabili in qualsiasi ordine.
Versione 1.0.0-alpha01
12 dicembre 2024
androidx.xr.compose:compose-*1.0.0-alpha01 è stato rilasciato.
Funzionalità della release iniziale
Release iniziale per gli sviluppatori di Jetpack Compose per XR. Utilizza concetti di Compose familiari, come righe e colonne, per creare layout UI spaziali in XR, sia che tu stia eseguendo il porting di un'app 2D esistente in XR o creando una nuova app XR da zero. Questa libreria fornisce elementi componibili spaziali e di sottospazio, come pannelli spaziali e orbiter, che ti consentono di posizionare la tua UI 2D esistente basata su Compose o Views in un layout spaziale. Introduce il composable Volume subspace, che ti consente di posizionare le entità SceneCore, come i modelli 3D, in relazione alla tua UI. Scopri di più in questa guida per gli sviluppatori:
Subspace: questo composable può essere posizionato ovunque nella gerarchia della UI dell'app, consentendoti di mantenere i layout per la UI 2D e spaziale senza perdere il contesto tra i file. In questo modo è più facile condividere elementi come l'architettura dell'app esistente tra XR e altri fattori di forma senza dover eseguire l'hoisting dello stato nell'intero albero della UI o riprogettare l'app.SpatialPanel: un pannello spaziale è un elemento componibile di un sottospazio che ti consente di mostrare i contenuti dell'app, ad esempio la riproduzione di video, immagini fisse o qualsiasi altro contenuto in un pannello spaziale.
Orbiter: un orbiter è un componente spaziale dell'interfaccia utente. È progettata per essere collegata a un pannello spaziale corrispondente e contiene elementi di navigazione e azioni contestuali correlati a quel pannello spaziale. Ad esempio, se hai creato un pannello spaziale per visualizzare contenuti video, puoi aggiungere controlli di riproduzione video all'interno di un orbiter.
Volume: posiziona le entità SceneCore, come i modelli 3D, in relazione alla tua UI.
Layout spaziale: Puoi creare più pannelli spaziali e posizionarli all'interno di un layout spaziale utilizzando
SpatialRow,SpatialColumn,SpatialBoxeSpatialLayoutSpacer. UtilizzaSubspaceModifierper personalizzare il layout.Componenti UI spaziali: questi elementi possono essere riutilizzati nella UI 2D e i loro attributi spaziali saranno visibili solo quando le funzionalità spaziali sono attive.
SpatialDialog: il riquadro si sposta leggermente indietro nella profondità z per visualizzare una finestra di dialogo in rilievo.SpatialPopUp: il riquadro si sposterà leggermente indietro nella profondità z per visualizzare un popup in rilievoSpatialElevation:SpatialElevationLevelpuò essere impostato per aggiungere l'altitudine.
SpatialCapabilities: le funzionalità spaziali possono cambiare man mano che gli utenti interagiscono con la tua app o con il sistema, o possono anche essere modificate dalla tua app stessa, ad esempio passando a Spazio Home o Spazio intero. Per evitare problemi, l'app deve verificare la presenza di
LocalSpatialCapabilities.currentper determinare quali API sono supportate nell'ambiente corrente.isSpatialUiEnabled: elementi UI spaziali (ad es. SpatialPanel)isContent3dEnabled: oggetti 3DisAppEnvironmentEnabled: l'ambienteisPassthroughControlEnabled: se l'applicazione può controllare o meno lo stato di passthroughisSpatialAudioEnabled: audio spaziale
Problemi noti
- Al momento, per utilizzare Jetpack Compose per XR è richiesto un minSDK di 30. Come soluzione alternativa, puoi aggiungere la seguente voce del manifest
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>per poter creare ed eseguire con un minSDK di 23. - Al momento, le app Jetpack XR richiedono l'autorizzazione
android.permission.SCENE_UNDERSTANDINGin AndroidManifest. - Quando un'app si avvia direttamente in Spazio intero utilizzando la proprietà
PROPERTY_XR_ACTIVITY_START_MODEnel manifest, le attività/applicazioni vengono inizialmente aperte in Spazio Casa prima di passare a Spazio intero. - I glTF nei composabili di volume potrebbero inizialmente sfarfallare nella posizione sbagliata.
- L'utilizzo di un SpatialDialog in un riquadro che è stato spostato in modo significativo spingerà i contenuti nella direzione sbagliata.