Jetpack Compose para XR
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 21 de outubro de 2026 | - | - | 1.0.0-beta02 | - |
Declarar dependências
Para adicionar uma dependência ao XR Compose, é preciso incluir o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle do
seu app ou módulo:
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta02" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta02" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta02") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta02") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.0
Versão 1.0.0-beta02
21 de outubro de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-beta02 e androidx.xr.compose:compose-testing:1.0.0-beta02. A versão 1.0.0-beta02 contém estes commits.
Mudanças na API
- As bibliotecas agora têm como destino o Kotlin 2.2 e exigem o kotlinc 2.2 (I82396, b/498369605).
- O parâmetro
halfLifeMsdeFollowMode.soft()foi renomeado comohalfLifeMillis. (I39187). - Conversão de
PitchLimitsem um@JvmInline value class, empacotando dois números flutuantes em umLongpara eliminar alocações de objetos. (Id43c3). - Adição de um novo parâmetro para
FollowMode.soft:halfLifeMs,startDelayestartThresholds. O parâmetrodurationMsfoi removido porque não é mais necessário, já que estamos fazendo a transição de um algoritmosmoothSteppara um algoritmoexponentialDecay. (If0140). - Remova a sobrecarga descontinuada de
SpatialActivityPanel. Use a sobrecarga deSpatialActivityPanelque aceita umSpatialActivityPanelController. (I5abc3). - Ative transições entre conteúdo combinável 3D e 2D em uma atividade no
FullSpaceMode. Essa mudança é controlada porSpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237). - Exposição da sobrecarga experimental de
Subspaceque usa um parâmetroFollowTargetpara oferecer suporte ao conteúdo seguinte. (Iec1a9). - Os modificadores móveis descontinuados foram removidos. Em vez disso, use o novo modificador móvel que aceita o novo
MovePolicycomo parâmetro. (Ib135d). - Remoção do
DragPolicydescontinuado. UseSubspaceModifier.movable(). (I108d4). - As sobrecargas sem estado
SlidereRangeSliderforam descontinuadas em favor das versões com estado. As APIsactiveRangeStarteactiveRangeEndemRangeSliderStateforam renomeadas comostartValueeendValue, descontinuando as APIs Slider mais antigas, não promovidas e experimentais comDeprecationLevel.HIDDEN. (If8995).
Correções de bugs
- Correção de
RotateToLookAtUsercom a introdução deposeInActivitySpacepara garantir o cálculo correto da pose para todos os tipos de subespaço, incluindo aqueles anexados a âncoras ou usuários.Ica367b - Correção de uma falha de restrições quando o Orbiter é anexado a painéis grandes (I8c4bf).
- Correção de um bug em
SubspaceLayoutNodeem queremoveAll()causava alocações desnecessárias deArrayList. Também corrigimos o desempenho do cálculo de profundidade. I34a10a - A dependência
androidx.lifecycle:lifecycle-runtimefoi atualizada para 2.10.0. Essa versão é necessária para que as verificações de lint do ciclo de vida do pacote sejam executadas com o AGP versão 9.5.0-alpha04 ou mais recente. (I99bfd, b/556807521). - Melhoria dos kdocs relacionados a
AudioOutputProviderpara destacar que ele não deve ser reutilizado com várias instâncias deExoPlayer(I6b18e). - Correção de pequenos problemas de ortografia e gramática do kdoc (Id3ba6).
Problemas conhecidos
- Esta versão de
androidx.xr.composedepende deandroidx.xr.scenecore:1.0.0-rc01, que tem um vazamento de memória conhecido. Na configuração do build, é possível substituir explicitamente a dependênciaSceneCorepela versão1.0.0, que inclui uma correção para o vazamento de memória.
Versão 1.0.0-beta01
23 de setembro de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-beta01 e androidx.xr.compose:compose-testing:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações.
Mudanças na API
- Remoção de
DragPolicy, que foi descontinuado. UseSubspaceModifier.movable(). (I108d4). - O
ResizePolicydescontinuado e os usos dele emSpatialPaneleSpatialExternalSurfaceforam removidos. Remoção de uma funçãoSubspaceModifier.resizabledescontinuada. Use o novoSubspaceModifier.resizablecom um novoResizePolicy. (I59e6b) - Adição do parâmetro
isPitchUpdateEnabledpara permitir a ativação ou desativação do rastreamento de tom de forma independente. (Ie9e86). - A nulidade de
pitchLimitsfoi removida, ePitchLimits.UNCONSTRAINEDfoi renomeado comoPitchLimits.FullRange. (I0154f). ExposedDropdownMenuagora é uma função de extensão emExposedDropdownMenuBoxScopeem vez de um membro. Talvez seja necessário atualizar seu código com uma nova importação. (Ie8a65).- A classe
SurfaceProtectiondescontinuada foi removida. UseSpatialExternalSurfaceProtection. (Iab2c6). - A função Orbiter que usa um
OrbiterPoseProviderfoi descontinuada e substituída pela que usaSpatialAlignment. (I4d12b). - O
SpatialActivityPanelagora exige umSpatialActivityPanelController(instanciado usandorememberSpatialActivityPanelController) para iniciar e gerenciar atividades incorporadas. (Id25c6). - O parâmetro
upDirectionfoi removido derotateToLookAtUser, e os parâmetros de restrições de rotação (isYawUpdateEnabledepitchLimits) foram adicionados (I1370a).
Correções de bugs
- Correção de vários problemas de
InteractionPolicy. Ocorria uma falha se um evento de entrada acontecesse logo que o elemento que pode ser composto ou filho (por exemplo, um Orbiter) iniciava uma sequência de descarte. Também foi corrigido um problema em que um filho recebia eventos de passagem do cursor. (Ifc477). - Reduzimos o tamanho do painel em
RotateToLookAtUserActivitypara evitar cortes em dispositivos com campo de visão menor. (I8d672).
Problemas conhecidos
- Há um problema com os painéis do Compose XR em que a criação de muitos painéis em uma única atividade pode causar corrupção no que está sendo visualizado, mesmo depois que os painéis são destruídos.
Versão 1.0.0-alpha17
12 de agosto de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha17 e androidx.xr.compose:compose-testing:1.0.0-alpha17. A versão 1.0.0-alpha17 contém estas confirmações.
Mudanças na API
- Remova a classe de valor
Meter, que foi substituída porvirtualPixelDensityemScenecore. (I690ee). - A API
SpatialGltfModelagora é experimental e precisa ser ativada para uso. (I4557e). - Tornar
systemredimensionável anulável (Ib0093). Densityfoi exposto emSubspaceSemanticsInfopara testes. (I2e826).- Renomeação da opção padrão
ResizePolicycomosysteme adição de uma nova opçãoDefaultsem parâmetros (Ic8b16). FollowTargetfoi marcado como experimental. Toda a APIFollowingSubspaceagora é experimental. (Id4ee3).- As APIs
GltfAnimationforam removidas (Ic2894). - O método parametrizado
MovePolicy.default()foi renomeado comoMovePolicy.system(). Introdução de uma propriedadeval MovePolicy.Defaultpara representar o comportamento de movimento padrão. (Iedcc9). - Os requisitos de ativação de
ExperimentalMoveAnchorPolicyforam expandidos paraPlaneSemanticePlaneOrientation(Ief927). - Remoção de
resetMinsdeVolumeConstraints.offset(Ib2f2f) - A função
SceneCoreEntitySizeAdapterdescontinuada foi removida. (Ib6722). - A sobrecarga descontinuada de
SubspacecomallowUnboundedSubspacefoi removida. (I8e97f). - A sobrecarga do modificador de semântica descontinuada foi removida. (I4ac10).
Correções de bugs
- Correção de um problema em que os filhos de um
Composablecom umInteractionPolicyanexado acionavam eventos de entrada (Icdba6).
Versão 1.0.0-alpha16
15 de julho de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha16 e androidx.xr.compose:compose-testing:1.0.0-alpha16. A versão 1.0.0-alpha16 contém estas confirmações.
Mudanças na API
- As APIs
ComponentOverrideforam removidas (I820c4). - As APIs
GltfAnimationeSpatialGltfModelAnimationforam marcadas como experimentais. Algumas propriedades foram transformadas em getters. (I8d689, b/524771027). - Corrigimos o comportamento geral de densidade estabelecendo a conversão entre metros e pixels como constante. O Meter.kt foi descontinuado. Agora, o
Session.scene.virtualPixelDensitypode ser usado como alternativa. (I122ff, b/430097855, b/474168798) - Atualização do modificador redimensionável para usar um
ResizePolicyem vez de dois modificadores (I7fb0f, b/496257436, b/519672992). - Adição de um parâmetro de tolerância
Dp = Dp(0.5f)a todas as declarações públicas de igualdade de posição e dimensão de usar pontos flutuantes emSubspaceAssertions.kt. O comportamento de tolerância padrão (0.5.dp) está totalmente documentado. (I266cb, b/521491915). - Adicionamos uma sobrecarga móvel com o parâmetro
movePolicye descontinuamostransformingMovableemovable(Ic88c1, b/481781189). - Adicionamos novas variantes não interativas de itens de lista padrão e segmentados que seguem as especificações do Material Expressive. A versão não expressiva foi descontinuada. (Ide4de, b/491994186).
- Para o Subspace, o parâmetro
allowUnboundedSubspacefoi descontinuado e ocultado. O comportamento ilimitado agora deve ser alcançado usandoSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) no modificador Subspace. O parâmetroallowUnboundedSubspacefoi removido deFollowingSubspace. (Ia72ae, b/433624021). - Conversão de
Session.createem uma função de suspensão. (I5d27f). - Adicionamos
SubspaceModifier.spatializedAudioOutput, que permite espacializar a reprodução de áudio espacial usandoExoPlayerouSoundEffectPlayer(I46697, b/489421980, b/497867019). - Atualizamos
ComponentActivity.requestHomeSpace()erequestFullSpace()para retornarSpaceRequestResultpara verificação de status. (If1672). AnchorEntityfoi atualizado paraAnchorSpace(Ifa95e, b/513619219).- Método
fromResourceirrestrito deSpatialGltfModelSource(I1f5a1, b/503047416) - Os membros de
SubspaceSemanticsMatchersão públicos: a propriedadedescription, os métodos de fábrica complementares (expectValue,keyIsDefined,keyNotDefined), as funções de membro (matches,matchesAny) e os operadores (and,or,not). (I972a4, b/460427288) - Atualizamos
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfoeSubspaceSemanticsModifierNodepara usar tipos de semântica espacial selecionados. (I80dea, b/460427288). - Renomeamos
positioncomoalignemSpatialAlignmente removemos métodos de deslocamento direcional individuais em favor de uma APIalignunificada. (I9bdb2, b/479805937). - As APIs descontinuadas do modo de espaço foram removidas de
SpatialConfiguration. (I1ef5c, b/458712461). - Lançamento de
SubspaceSemanticsConfiguration. Esta é uma configuração de propriedades de semântica para um nó espacial. Essa classe expõe com segurança métodos de consulta para semântica 3D sem vazar recursos semânticos 2D fundamentais para consumidores externos. (Id025e, b/460427288). - Introdução de
SubspaceSemanticsPropertyReceiver: um wrapper dedicado que limita as propriedades do contêiner de layout 3D a campos válidos (inicialmentetestTagecontentDescription). (I5cf5c, b/460427288)
Correções de bugs
- Atualizamos o
hasContentDescriptiondo modificador semântico para usar a correspondência de substring como padrão. (I08214). - Adicionamos o
FollowBehavior.ExponentialDecay()restrito, que oferece um comportamento de acompanhamento suave guiado pela física elástica. (I7449c, b/485639909, b/500493335)
A maioria das APIs será afetada por isso. Especificamente, o LocalSession CompositionLocal e todos os CompositionLocals que dependem de LocalSession (por exemplo, LocalSpatialConfiguration, LocalSpatialCapabilities etc.) agora serão resolvidos como null ou as versões não XR antes da inicialização do Session.
Quando o Session estiver disponível, a recomposição será acionada com o estado correto. (I0cfa4, b/514712835, b/514712835).
- Esclarecimento da documentação de
ComponentActivity.requestHomeSpaceeComponentActivity.requestFullSpacesobre o comportamento de suspensão, cancelamento e simultaneidade. Atualização dos testes para verificar a propagação deCancellationException. (I22f75, b/493289528).
Versão 1.0.0-alpha15
17 de junho de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha15 e androidx.xr.compose:compose-testing:1.0.0-alpha15. A versão 1.0.0-alpha15 contém estas confirmações.
Mudanças na API
- O
ResizePolicye o antigo modificador redimensionável foram descontinuados e substituídos por uma nova sobrecarga deSubspaceModifier.resizableeSubspaceModifier.transformingResizable. (I9e4bc). - APIs
SpatialGltfModelatualizadas: adicionamos suporte ao carregamento de modelos de recursos usandoSpatialGltfModelSource.fromResource. Renomeamos "speed" comoplaybackSpeedemSpatialGltfModelAnimatione adicionamos um método resume().SpatialGltfModelStatus.Loaded e Loading agora são objetos. (I523de). rotateToLookAtUserfoi marcada como uma API experimental. (I86c16).- A variável protegida
targetCurrentPosefoi movida e renomeada para a variável localcurrentTargetPoseMeter. (Ia557c). - Atualização dos kdocs
SpatialPaneleSpatialExternalSurfacepara incluir onde o objeto é renderizado no tamanho do layout (I72104). - Encapsulamos a lógica de carregamento de
SpatialGltfModelemSpatialGltfModelStatee esclarecemos o comportamento de falha. (Ibe98b). - Esclarecimento de
depthem kdocs deSubspaceModifer.size(I0f84f).
Versão 1.0.0-alpha14
19 de maio de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha14 e androidx.xr.compose:compose-testing:1.0.0-alpha14. A versão 1.0.0-alpha14 contém estas confirmações.
Mudanças na API
- Introdução de
transformingMovablepara o movimento 3D padrão processado pelo sistema e de uma nova sobrecarga paramovablepara processar comportamentos de movimento personalizados. (I50960). SpatialGltfModel.fromData()foi removido. (I4d083).- Adicionamos uma nova interface de nó modificador,
SubspaceMeasuredSizeAwareModifierNode, que fornece um callbackonRemeasuredapós a transmissão de medição.SubspaceLayoutAwareModifierNodeagora estende essa nova interface. O modificadoronSizeChangedfoi atualizado para usaronRemeasured, garantindo que o callback seja acionado logo após a medição, não após o posicionamento. (Iafbae). - Atualização de
InteractionPolicyparaInterface(I0ff30). - Atualizamos o Compose
compileSdkpara a API 37. Isso significa que uma versão mínima do AGP 9.2.0 é necessária ao usar o Compose. (Id45cd). - Atualização dos kdocs de
Size(Iefa9a).
Versão 1.0.0-alpha13
6 de maio de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha13 e androidx.xr.compose:compose-testing:1.0.0-alpha13. A versão 1.0.0-alpha13 contém estas confirmações.
Mudanças na API
- A API Orbiter está aguardando outras mudanças. Recomendamos suprimir os avisos de descontinuação para Orbiters e ficar de olho nas mudanças do Orbiter nas próximas versões.
- Quem usa
SceneCoreEntitypara renderizar glTFs precisa garantir que está transmitindosession.scene.activitySpacepara o parâmetroparentda chamadaGltfModel.createpara que os glTFs sejam renderizados. - Adicionamos a API
SpatialGltfModelpara que os desenvolvedores possam adicionar Gltfs aos apps do Compose para XR. Os desenvolvedores também podem consultar animações e nós nos modelos glTF. (I8b542, b/495422586). - Mudança de
SceneCoreEntitySizeAdapterde classe para interface (I5a784, b/475292310). SurfaceProtectionfoi renomeado comoSpatialExternalSurfaceProtectionAtualização dos kdocs deSpatialExternalSurface(Ifad0a, b/485231082).- Descontinuação de
currentWindowAdaptiveInfoe introdução da V2 (I40ecf, b/424442112). - O modificador
resizableagora é público e aplicável a grupos (por exemplo,SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - O modificador
movableagora é público. No momento, esse modificador funciona bem paraSpatialPanelseSpatialExternalSurface. No entanto, a intenção é que ele seja compatível com todos osSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitioneSpatialExitTransitionmarcados como@Immutable(If1710, b/487757837).- A API
SpatialGltfModelestá marcada como restrita para esta versão, aguardando testes adicionais. (Ibf003, b/466090694). - Renomeamos
DeviceTrackingMode.LAST_KNOWNcomoSPATIAL_LAST_KNOWN(com um substituto descontinuado), adicionamosINERTIAL_LAST_KNOWNpara rastreamento de 3DoF e adicionamosTRACKING_DEGRADEDaTrackingState. (Ie661c, b/445466590). - Remoção do
SpatialLayoutSpacerdescontinuado (I7b36c). - Remoção da API de padding descontinuada (If1886).
- Adicionamos
floatRangeaos valores de viés. O valor padrão deLayoutDirectionfoi removido (I9d74e).
Correções de bugs
- Adicionamos exemplos de código e documentação do KDoc para
SpatialColumn,SpatialRoweSpatialCurvedRow. (Iaf54f, b/495777633).
Versão 1.0.0-alpha12
25 de março de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha12 e androidx.xr.compose:compose-testing:1.0.0-alpha12. A versão 1.0.0-alpha12 contém estes commits.
Mudanças na API
- Adicione as APIs
SpatialGltfModeleSpatialGltfModelAnimationpara renderizar glTFs e controlar animações. Mudança deSpatialGltfModelStateparaAutoCloseable, que agora precisa ser fechado para liberar os recursos. (I11fde, b/466065486, b/481379924). No entanto, a APISpatialGltfModelestá marcada como restrita para esta versão, aguardando testes adicionais. (Ibf003, b/466090694). - Adicionamos uma sobrecarga vazia descontinuada para
SubspaceModifier.rotate. (Idceb6). - A função
SpatialSmoothFeatheringEffectfoi renomeada comospatialSmoothFeatheringEffecte movida para um módulo de desenho. O valor padrão de suavização deSpatialExternalSurfacefoi atualizado para nulo, o que imita a antiga funcionalidade ZeroFeatheringEffect. (I5fdaa, b/460426800). - Contato removido:
onPointSourceParamsAvailable. Uma API de espacialização de áudio diferente vai estar disponível em breve. (I86507, b/458513439). - Adicionamos o comportamento RTL para modificadores de subespaço de deslocamento. Também adicionamos
absoluteOffsetpara ignorar a direção do layout. (I30e4b, b/474409165).
Versão 1.0.0-alpha11
25 de fevereiro de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha11 e androidx.xr.compose:compose-testing:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estes commits.
Novos recursos
- Adição do parâmetro
SuperSamplingaSpatialExternalSurfaces(Icd4d1)
Problemas conhecidos
- Um problema com
SurfaceEntityno SceneCore pode causar falhas em apps ao criar instâncias deSpatialExternalSurface. Esse problema foi resolvido nas versõesandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12e posteriores. Os apps afetados precisam ser atualizados para as versões mais recentes.
Mudanças na API
- Mudanças no padding do modificador de subespaço para reconhecimento da direção do layout. (I53e25).
SpatialCapabilitiesagora está selado e não pode ser estendido. (I07aef).- As APIs
SpatialRoweSpatialColumnque aceitam um parâmetroSpatialAlignmentgenérico foram descontinuadas. Em vez disso, use as APIs que aceitamverticalAlignmentouhorizontalAlignmentparaSpatialRoweSpatialColumn, respectivamente. (Iec390). - Combinação de APIs de função
SubspaceLayoutde sobrecarga (Idd30a) SubspaceModifier.lookAtUserfoi renomeado comorotateToLookAtUser, e o parâmetroupfoi renomeado comoupDirection. (Icafb8).SpatialRowagora é uma função inline (Ia2f20).- Transformação de
SpatialColumnem uma função inline (I681be). - A API Billboard foi removida (Ib76cd).
Versão 1.0.0-alpha10
28 de janeiro de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha10 e androidx.xr.compose:compose-testing:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estes commits.
Mudanças na API
- Remoção da API descontinuada:
ApplicationSubspace(Ia6596, b/468345186). - Atualização de
SpatialShapepara uma interface selada (I7e3f5, b/460426800). - Remoção de APIs descontinuadas no
SpatialAlignment. (Ib0b61, b/468011887). - Descontinuação de
SpatialLayoutSpacere introdução deSpatialSpacer. (I2ebf3, b/466071383). - Atualizamos a API
UserSubspacepara substituir a terminologia "bloqueio lento" por "bloqueio flexível". (I9ded1, b/464035984).
Versão 1.0.0-alpha09
3 de dezembro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha09 e androidx.xr.compose:compose-testing:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estes commits.
Mudanças na API
- Adição de modificadores
LookAtUsere Billboard, que permitem que o conteúdo sempre fique de frente para o usuário. (I49b99). - Adiciona a capacidade de definir um
InteractionPolicycomoSpatialExternalSurfaceseSpatialPanels, permitindo a detecção de cliques e outros eventos de entrada 3D. (Iae155). - Adicionamos uma sobrecarga de tamanho e modificador
requiredSizecom largura, altura e profundidade como valores de Dp. (I92f79). - A interface
ParentLayoutParamsModifieragora estendeDelegatableSubspaceNode. (I1a6d4). - O
ApplicationSubspacefoi descontinuado e substituído pela API Subspace.- O comportamento da API Subspace foi alterado para fornecer apenas um subespaço em todo o aplicativo na pose e na escala recomendadas.
- A API
PlanarEmbeddedSubspacefoi introduzida para fornecer subespaços incorporados em contextos 2D. (Id3343).
- Adicionamos a flag
shouldAutoInvalidateà APISubspaceModifier.Node. (I93902). - Adição de
required(Size|Width|Depth|Height)em APIs que permitem que os desenvolvedores restrinjam o tamanho de um@SubspaceComposablea um intervalo específico, desconsiderando as restrições de medição recebidas do elemento pai. (Ifaa78). - Adição de
SubspaceModifier.onSizeChanged, que fornece um callback simples e focado para que os desenvolvedores reajam quando o tamanho de um@SubspaceComposablemuda. (I994f9). - A API Volume foi removida. A API
SceneCoreEntityprecisa ser usada em vez da API Volume. (I4162b). - Divida
SubspaceLayoutModifierNode.requestRelayouteminvalidateMeasurement/invalidatePlacement. (I14805). - Adição da API
SpatialGltfModel, que permite que os desenvolvedores renderizem glTFs no Compose. (Icc91f). - Introdução da API combinável
SpatialGltfModelpara renderizar glTFs com facilidade (Iade67).
Correções de bugs
- Correção de um bug de layout em
SceneCoreEntity. Agora, ele deve respeitar as restrições. (I11bb8). - Os módulos jxr-compose foram reduzidos para
Compile sdk = 34(I2d5db).
Versão 1.0.0-alpha08
22 de outubro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha08 e androidx.xr.compose:compose-testing:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estes commits.
Mudanças na API
- Mudança de
ResizePolicypara aceitaronResizeStart,onResizeUpdateeonResizeEnd. (I7e21f).
Correções de bugs
- Evitamos uma falha ao destruir uma atividade com um Subspace. (I595a1).
Versão 1.0.0-alpha07
24 de setembro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha07 e androidx.xr.compose:compose-testing:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estes commits.
Mudanças na API
- Melhoria do KDocs para
SpatialMainPanel. (I27b70, b/444467891). - Introdução de
SpatialArrangementpara organizar filhos ao longo do eixo principal em layouts 3D, comoSpatialRoweSpatialColumn. Essa nova API oferece opções de organização conhecidas do Compose 2D, incluindoStart,End,Center,SpaceBetween,SpaceAroundeSpaceEvenly, com suporte total para as direções de layout LTR e RTL. (I7db38, b/436289959). - Adicionamos uma interface de base para
SubspaceModifier.Nodepara melhorar a segurança de tipos e a usabilidade das interfaces de extensão, comoCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(interno) (Iede00, b/440599394, b/440599394)
SpatialExternalSurfacesem restrições (I33315, b/439646773)- Introdução de
SubspaceModifieraos elementos combináveis do Subspace e substituição do parâmetro de restrições porSubspaceModifiercomSubspaceModifiersrelacionado ao tamanho. SeallowUnboundedSubspacefor verdadeiro, os subespaços ainda poderão ter restrições ilimitadas. (Ib06e6, b/433331675). - Descontinuação de
SubspaceModifiersmóvel e redimensionável, já queDragPolicy()eResizePolicy()agora fazem parte da APISpatialPaneleSpatialExternalSurface(I397bf, b/437924639). - Adição de suporte para
LayoutDirectionem layouts espaciais. O elemento que usaSpatialAlignmentagora vai posicionar corretamente os elementos nos contextos LTR e RTL. (I964bb, b/436300273). - Adicione parâmetros redimensionáveis e móveis às APIs
Panelpara garantir que esses comportamentos só possam ser aplicados a contêineres compatíveis. (Id491c). - Adição de
sizeIn,widthIn,heightInedepthInSubspaceModifiers, que permitem definir restrições exatas de mínimo e máximo para largura, altura e profundidade. (I1af09, b/433330761)
Versão 1.0.0-alpha06
13 de agosto de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha06 e androidx.xr.compose:compose-testing:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estes commits.
Correções de bugs
- Recrie o
ComposeXrOwnerLocalsquando o proprietário do ciclo de vida for destruído. (9123ce1)
Versão 1.0.0-alpha05
30 de julho de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha05 e androidx.xr.compose:compose-testing:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estes commits.
Novos recursos
- Tornamos a classe de anotação
SubspaceComposablepública. (Ic2a34, b/399432430). - Dois novos elementos combináveis
SpatialExternalSurfaceque representam esferas de 180 e 360 graus. (I40ef2, b/391705799). - Adicionamos
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147). - Adicionamos a API
SceneCoreEntitypara melhorar a interoperabilidade entre oSceneCoree o Compose para XR. (I50bb3, b/423020989). - Foi fornecida a API
GravityAlignedsubspacepara oferecer suporte ao recursoGravityAlignedsem escalonamento (I07359).
Mudanças na API
SpatialDialog()vai seguir a configuração de pressionamento deSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132).- Atualize
minimumPanelDimensionpara um novo tamanho de dimensão padrão deDimensions(0.1f, 0.1f, 0.1f)devido à representação em metros. (Ib852a). - Os subespaços e orbitadores agora vão manter o estado interno no espaço inicial e quando o app estiver em segundo plano. No modo de espaço compacto, o Subspace ainda vai configurar a cena em preparação para a mudança para o modo de espaço ampliado. (I40317, b/416037751).
SpatialDialogsagora vai manter o estado quando o app estiver em segundo plano. (I6aa56).ApplicationSubspaceagora herda a escala e a posição recomendadas do sistema. (I4565f, b/418834194)- Adicionamos uma mensagem de erro melhor e acionamos o erro antes quando um
SubspaceComposableé usado em um contexto que não éSubspaceComposable. (Iee2ae, b/416484684). - Atualização de
ExperimentalSubspaceVolumeApide aviso para erro, porque os avisos geralmente são ignorados quando as APIs de composição são usadas incorretamente. (I427aa, b/424864286). - O subespaço e
ApplicationSubspaceagora são restritos porrecommendedContentBoxInFullSpace. Antes, ele era limitado pelo campo de visão doSpatialUser. (I41015, b/423074142). - Atualização de
SpatialElevationpara usar o tamanho mínimo e não mais o tamanho codificado (I2dbe6, b/427785338). - Atualizar a forma como aplicamos o scrim ao
SpatialAcitivityPanelpara que ele seja atualizado quando uma variável-chave for modificada. (I0f64d, b/427999029). - Remova
VolumeConstraints.Unboundede defina os valores de restrição padrão como equivalentes. (Ie24ec, b/407938414). SpatialFeatheringSizenão é mais público (I1c15b, b/399432430).- O
Placeablede XR foi renomeado comoSubspacePlaceablepara diferenciá-lo doPlaceabledo Compose. (I74874). - Removendo as configurações do Orbiter e adicionando
shouldRenderInNonSpatialcomo um novo parâmetro. Além disso, a classeEdgeOffsetfoi removida, eorbiterOffsetTypefoi adicionado como um novo parâmetro para consolidar as funçõesOrbiter(). Além de renomearOrbiterEdgecomoContentEdge. (Iebf3d). - Renomeamos
MeasurablecomoSubspaceMeasurablepara diferenciar o tipo do tipoMeasurabledo Compose. (I9726c). MeasureResultfoi renomeado comoSubspaceMeasureResult(I9f34d).- A API
setSubspaceContentfoi removida para usar osetContentdo Compose com um elemento combinávelSubspace. (Ifff4c, b/421427391, b/421427391) MeasurePolicyfoi renomeado comoSubspaceMeasurePolicy. (I37a9b, b/422553904).- Transforme
SubspaceSemanticsInfoem uma interface selada, porque não será possível adicionar membros sem os padrões. (I372f9, b/423704068). - Atualizamos a documentação de
SpatialExternalSurfacee renomeamosContentSecurityLevelcomoSurfaceProtection(I3c460, b/420982808). - Foi fornecido um construtor sobrecarregado para o modificador móvel que permite a ancoragem. (Ic0c70).
- Adição de mais provedores de posição para dicas, de modo que os desenvolvedores agora possam controlar se a dica é colocada acima, abaixo, à esquerda ou à direita da âncora. Adicionamos uma API que usa uma forma para cursores de texto, permitindo que mais formas personalizadas sejam fornecidas. (Ie513c, b/374766087, b/418854637).
CoreEntityfoi removido comoPublishedApi(Ifee05).
Correções de bugs
- Correção de um problema em que o
SpatialDialogpiscava ao ser renderizado. (Ife73c, b/401619909). - Correção de um problema em que
SpatialDialognão conseguia aplicar uma máscara ao painel de atividades. (I8ca6c, b/367442109) - Correção da caixa de diálogo de XR que não mostrava alguns conteúdos (I17cd5, b/418062437).
- Correção de um problema em que o
SpatialPopupera dispensado ao clicar no conteúdo. (If262c, b/417245722). - Corrigimos o problema em que, ao encadear
resizable().movable(), o SpatialPanel não era redimensionado corretamente para o novo tamanho. (I02ee3, b/422264230). - Correção de
topBarsobreposto ao menu emSpatialComposeVideoPlayer(Id33bc, b/427168167). - Correção do raio do canto que não estava sendo renderizado (I975fe, b/428261830).
Versão 1.0.0-alpha04
7 de maio de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha04 e androidx.xr.compose:compose-testing:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estes commits.
Novos recursos
- Adicionamos a interface
CompositionLocalConsumerSubspaceModifierNodepara permitir que tipos personalizados deSubspaceModifieracessem valores locais de composição. - Adicionamos uma nova API
SpatialPanelque segue o estilo de implementação do ComposeAndroidViewe descontinua aViewBased SpatialPanelanterior. - Adicionamos o objeto complementar
VolumeConstraints.Unbounded, que representa restrições ilimitadas. - Adição de
SubspaceModifier.onPointSourceParamspara permitir uma fonte de áudio espacializado. - Um
ApplicationSubspacepúblico foi adicionado, oferecendoVolumeConstraintsopcional para definir uma área 3D em que o app pode renderizar conteúdo espacial. Por padrão, se nenhuma restrição for especificada, o Subspace será limitado pelo campo de visão atual doSpatialUserem largura e altura. Os usuários podem fornecer restrições a serem usadas se não for possível determinar o campo de visão. Caso contrário, os valores padrão de largura e altura do campo de visão serão usados. - Adição de
SpatialExternalSurface, que pode ser usado para renderizar conteúdo estereoscópico.SpatialExternalSurfaceé personalizável com modificadores (exceto alfa) e um efeito de suavização de borda. - Adicionamos um novo modificador de subespaço
pointerHoverIconque permite aos usuários definir o ícone do ponteiro espacial.
Mudanças na API
- Removemos a restrição
RequiresApi(34)de todos os pacotes do Jetpack XR. Essa restrição era redundante, já que o Jetpack XR está disponível apenas em dispositivos com nível da API 34 ou mais recente. (Iae0f8) - Os projetos lançados com o Kotlin 2.0 exigem o KGP 2.0.0 ou mais recente para serem consumidos (Idb6b5).
- O processamento de retorno agora funciona em painéis espaciais sem atividades incorporadas. Para que o processamento de retorno funcione, é necessário especificar
android:enableOnBackInvokedCallback="true"no manifesto do Android. - O processamento de retorno agora funciona em caixas de diálogo espaciais. Para que o processamento de retorno funcione, é necessário especificar
android:enableOnBackInvokedCallback="true"no manifesto do Android. - Os
SpatialPanels baseados no Compose e em visualizações agora podem ser dimensionados com base no conteúdo. - Agora, os desenvolvedores podem definir os próprios valores personalizados de
SpatialElevationLevele não estão limitados aos níveis predefinidos. - O nível de elevação do Orbiter agora pode ser personalizado com o parâmetro
elevation. - Agora, o Subspace pode ser limitado pelo campo de visão do
SpatialUserem largura e altura por padrão. Se não for possível determinar o campo de visão, os valores padrão de largura e altura do campo de visão serão usados. - Adição de novos callbacks
onMoveStarteonMoveEndao modificadorMovable. Os callbacksonMoveStarteonMoveEndsão chamados quando o usuário começa e termina de mover um elemento combinável de subespaço com o modificador móvel. - O parâmetro
namefoi removido de APIs espaciais, comoSpatialRoweSpatialPanel. Para depurar árvores de composição espacial, useSubspaceModifier.testTag. - Remoção de uma sobrecarga não compatível de
SpatialPopupque só temspatialElevationLevelecontent. Use a interface compatível comonDimissRequest. - O callback
onPoseChangedo modificador Movable foi removido. UseonMove. SubspaceModifiersnão vai mais aplicar os efeitos se estiverem desvinculados ou em processo de desvinculação.- A API
SpatialRowatual foi dividida emSpatialRoweSpatialCurvedRow. Se você usava o parâmetrocurveRadiusdeSpatialRow, useSpatialCurvedRow, que oferece o mesmo comportamento. MainPaneleActivityPanelnão têm mais barras de título quando executados em uma imagem de sistema recente.- Os modificadores de alfa e escala agora podem ser empilhados e vão multiplicar os valores para o valor final de alfa ou escala aplicado.
- O callback
onPoseChangedo modificador Movable foi otimizado para realizar movimentos de pose mais suaves. - Os modificadores móveis e redimensionáveis agora vão realizar os callbacks na linha de execução principal para garantir que as mudanças de estado acionem a recomposição.
- Adicionamos a observação de estado às fases de layout e medição para garantir que as mudanças de estado em
SubspaceLayoutacionem um novo layout. - Atualizações otimizadas da cadeia de modificadores para reutilizar melhor os modificadores atuais.
Correções de bugs
- A scrimming foi interrompida quando um
SpatialDialogé mostrado. (Ic4594). - As solicitações de novo layout feitas enquanto os nós modificadores estão desanexados agora serão ignoradas.
- As fases de novo layout acionadas pelos modificadores Movable e Resizable foram removidas.
- Correção de uma falha no elemento combinável
MainPanel()que ocorria quando uma dimensão era definida como zero, diretamente ou durante um cálculo de layout, por exemplo, um cálculo deSpatialRow/SpatialColumn. Agora, o painel será ocultado. Essa correção aborda especificamente as falhas durante a fase de layout. O redimensionamento do painel para zero por interação do usuário será tratado separadamente. O painel oculto não tem recursos de IU. - Correção de um problema com
maintainAspectRatiodo modificador redimensionável. A proporção deve ser mantida agora. - Correção de um problema com Subspaces aninhados em que eles eram posicionados incorretamente para um único frame.
- Correção de um problema em que os cantos arredondados às vezes não eram aplicados quando deveriam.
NestedSubspacesnão vai mais aparecer em um frame no local errado.
Versão 1.0.0-alpha03
26 de fevereiro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha03 e androidx.xr.compose:compose-testing:1.0.0-alpha03, sem mudanças importantes desde a última versão Alfa. A versão 1.0.0-alpha03 contém estes commits.
Versão 1.0.0-alpha02
12 de fevereiro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha02 e androidx.xr.compose:compose-testing:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estes commits.
Novos recursos
- O Painel de Atividades agora pode ocultar o conteúdo quando uma caixa de diálogo espacial é ativada.
- A API
Orbiteragora pode ser usada em contextosSubspaceComposablee vai anexar Orbiters ao elemento pai combinável mais próximo baseado emSubspaceLayout. - Introdução de
LayoutCoordinatesAwareModifierNodepara permitir modificadores personalizados com base no posicionamento. - Adição de métodos de ciclo de vida de anexação/desanexação a
SubspaceModifier.Node. - Adição de
scaleWithDistanceao modificador móvel. QuandoscaleWithDistanceestá ativado, o elemento de subespaço movido aumenta ou diminui. Ele também vai manter qualquer escala explícita que tinha antes do movimento.
Mudanças na API
- Remoção de
SessionCallbackProviderem favor deSpatialCapabilities.
Outras mudanças
- Reduzimos
minSDKpara 24. Todas as APIs Jetpack XR continuam exigindo a API 34 no ambiente de execução. - Os construtores
OrbiterEdgeOffset.inner,EdgeOffset.outereEdgeOffset.overlapnão são mais métodos@Composable, o que permite que sejam usados em contextos não combináveis. - Atualização dos níveis de elevação espacial para corresponder à especificação de UX mais recente.
- Implemente a interface
SubspaceSemanticsInfoemMeasurableLayout. SubspaceModifierElementfoi renomeado comoSubspaceModifierNodeElement
Correções de bugs
- Correções para estabilizar a ordenação de
SubspaceModifier. OSubspaceModifierdeve se comportar de maneira mais confiável. Os modificadores de deslocamento, rotação, escala, movimentação e redimensionamento agora podem ser usados em qualquer ordem.
Versão 1.0.0-alpha01
12 de dezembro de 2024
Lançamento de androidx.xr.compose:compose-*1.0.0-alpha01.
Recursos da versão inicial
Versão inicial para desenvolvedores do Jetpack Compose para XR. Use conceitos conhecidos do Compose, como linhas e colunas, para criar layouts de interface espacial em XR, seja para portar um app 2D para XR ou criar um novo app XR do zero. Essa biblioteca oferece elementos de composição de subespaço e espaciais, como painéis espaciais e orbitadores, que permitem colocar sua interface 2D atual do Compose ou baseada em visualizações em um layout espacial. Ele apresenta o elemento de composição de subespaço de volume, que permite colocar entidades do SceneCore, como modelos 3D, em relação à sua interface. Saiba mais neste guia para desenvolvedores:
Subspace: esse elemento combinável pode ser colocado em qualquer lugar na hierarquia da interface do app, permitindo que você mantenha layouts para interfaces 2D e espaciais sem perder o contexto entre os arquivos. Isso facilita o compartilhamento de elementos como a arquitetura de apps entre a XR e outros formatos, sem precisar elevar o estado em toda a árvore da interface ou reestruturar o app.SpatialPanel: um painel espacial é um elemento de composição de subespaço que permite mostrar o conteúdo do app. Por exemplo, você pode mostrar a reprodução de vídeos, imagens estáticas ou qualquer outro conteúdo em um painel espacial.
Orbitador: é um componente de interface espacial. Ela foi projetada para ser anexada a um painel espacial correspondente e contém itens de navegação e ações necessárias contextuais relacionados a esse painel. Por exemplo, se você criou um painel espacial para mostrar conteúdo de vídeo, pode adicionar controles de mídia dentro de um orbiter.
Volume: coloque entidades do SceneCore, como modelos 3D, em relação à sua interface.
Layout espacial: é possível criar vários painéis espaciais e colocá-los em um layout espacial usando
SpatialRow,SpatialColumn,SpatialBoxeSpatialLayoutSpacer. UseSubspaceModifiers para personalizar o layout.Componentes de interface espacial: esses elementos podem ser reutilizados na interface 2D, e os atributos espaciais só vão ficar visíveis quando os recursos espaciais estiverem ativados.
SpatialDialog: o painel será empurrado um pouco para trás na profundidade Z para mostrar uma caixa de diálogo elevada.SpatialPopUp: o painel será empurrado um pouco para trás na profundidade Z para mostrar um pop-up elevado.SpatialElevation:SpatialElevationLevelpode ser definido para adicionar elevação.
SpatialCapabilities: os recursos espaciais podem mudar conforme os usuários interagem com o app ou o sistema, ou até mesmo pelo próprio app, por exemplo, ao entrar no Espaço Compacto ou Espaço Ampliado. Para evitar problemas, seu app precisa verificar se há
LocalSpatialCapabilities.currentpara determinar quais APIs são compatíveis com o ambiente atual.isSpatialUiEnabled: elementos da interface espacial (por exemplo, SpatialPanel)isContent3dEnabled: objetos 3DisAppEnvironmentEnabled: o ambienteisPassthroughControlEnabled: se o aplicativo pode ou não controlar o estado de visualização externaisSpatialAudioEnabled: áudio espacial
Problemas conhecidos
- No momento, é necessário um minSDK de 30 para usar o Jetpack Compose para XR. Como alternativa, adicione a seguinte entrada de manifesto
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>para criar e executar com um minSDK de 23. - No momento, os apps do Jetpack XR exigem a permissão
android.permission.SCENE_UNDERSTANDINGno AndroidManifest. - Quando um app é iniciado diretamente no Espaço Ampliado usando a propriedade
PROPERTY_XR_ACTIVITY_START_MODEno manifesto, as atividades/apps são abertos inicialmente no Espaço Compacto antes de fazer a transição para o Espaço Ampliado. - Os glTFs em elementos de composição de volume podem piscar inicialmente no local errado.
- Usar um SpatialDialog em um painel que foi movido significativamente vai empurrar o conteúdo na direção errada.