Jetpack Compose para XR
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa | 
|---|---|---|---|---|
| 22 de outubro de 2025 | - | - | - | 1.0.0-alpha08 | 
Declarar dependências
Para adicionar uma dependência ao XR Compose, adicione 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-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") }
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-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
- Evita falhas 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
- Melhorias no KDocs para SpatialMainPanel. (I27b70, b/444467891)
- Introduzimos o 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 direções de layout LTR e RTL. (I7db38, b/436289959)
- Adicionamos uma interface básica para SubspaceModifier.Nodepara melhorar a segurança de tipo e a usabilidade de interfaces de extensão, como- CompositionLocalConsumerSubspaceModifierNode
- LayoutCoordinatesAwareModifierNode
- SubspaceLayoutModifierNode
- CoreEntityNode(interno) (Iede00, b/440599394, b/440599394)
 
- Remover restrições de SpatialExternalSurface(I33315, b/439646773)
- Apresente SubspaceModifieraos elementos combináveis do Subspace e substitua o parâmetro de restrições porSubspaceModifiercomSubspaceModifiersrelacionados 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 agora queDragPolicy()eResizePolicy()fazem parte da APISpatialPaneleSpatialExternalSurface(I397bf, b/437924639).
- Adição de compatibilidade com LayoutDirectionem layouts espaciais. O elemento combinável usandoSpatialAlignmentagora posiciona corretamente os elementos em 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,heightIn,depthInSubspaceModifiersque permitem definir restrições mínimas e máximas exatas 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).
- Adição de SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147).
- Adição da API SceneCoreEntitypara melhorar a interoperabilidade entreSceneCoree o Compose para XR. (I50bb3, b/423020989)
- Foi fornecida a API GravityAlignedsubspacepara oferecer suporte ao recursoGravityAlignede sem escalonamento (I07359).
Mudanças na API
- O SpatialDialog()vai seguir a configuração de pressionamento deSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)
- Atualize minimumPanelDimensionpara um novo tamanho padrão de dimensão deDimensions(0.1f, 0.1f, 0.1f)devido à representação em metros. (Ib852a).
- Os subespaços e os Orbiters agora vão manter o estado interno no espaço da casa 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).
- Agora, SpatialDialogsvai manter o estado quando o app estiver em segundo plano. (I6aa56).
- Agora, o ApplicationSubspaceherda a escala e a posição recomendadas do sistema. (I4565f, b/418834194)
- Adição de uma mensagem de erro melhor e acionamento do erro mais cedo quando um SubspaceComposableé usado em um contexto nãoSubspaceComposable. (Iee2ae, b/416484684)
- Atualização de ExperimentalSubspaceVolumeApide "Aviso" para "Erro" porque os avisos geralmente são ignorados ao usar APIs combináveis de maneira inadequada. (I427aa, b/424864286)
- O Subspace e o ApplicationSubspaceagora são restritos pelorecommendedContentBoxInFullSpace. Antes, ela era restrita pelo campo de visão deSpatialUser. (I41015, b/423074142).
- Atualização de SpatialElevationpara usar o tamanho mínimo e não mais o tamanho codificado (I2dbe6, b/427785338).
- Atualize como fazemos o scrim do SpatialAcitivityPanelpara atualizar quando uma variável principal é modificada. (I0f64d, b/427999029)
- Remova VolumeConstraints.Unboundede defina os valores de restrição padrão como o equivalente. (Ie24ec, b/407938414)
- O SpatialFeatheringSizenão é mais público (I1c15b, b/399432430).
- Renomeamos o Placeabledo XR comoSubspacePlaceablepara diferenciá-lo doPlaceabledo Compose. (I74874).
- Remoção das configurações do Orbiter e adição de shouldRenderInNonSpatialcomo um novo parâmetro. Além disso, remova a classeEdgeOffsete adicioneorbiterOffsetTypecomo um novo parâmetro para consolidar as funçõesOrbiter(). Além de renomearOrbiterEdgecomoContentEdge. (Iebf3d).
- Renomeado MeasurableparaSubspaceMeasurablepara diferenciar o tipo do tipoMeasurabledo Compose. (I9726c).
- MeasureResultfoi renomeado como- SubspaceMeasureResult(I9f34d).
- Removemos a API setSubspaceContentpara usar osetContentdo Compose com um elemento combinávelSubspace. (Ifff4c, b/421427391, b/421427391)
- MeasurePolicyfoi renomeado como- SubspaceMeasurePolicy. (I37a9b, b/422553904)
- Transforme SubspaceSemanticsInfoem uma interface selada porque não será possível adicionar membros sem os padrões. (I372f9, b/423704068)
- Atualização da documentação de SpatialExternalSurfacee renomeação deContentSecurityLevelparaSurfaceProtection(I3c460, b/420982808).
- Fornecido construtor sobrecarregado para modificador móvel que permite ancoragem. (Ic0c70)
- Adição de mais um provedor de posição para dicas. Agora os desenvolvedores podem controlar se a dica é colocada acima, abaixo, à esquerda ou à direita da âncora. Adicione uma API que receba uma forma para acentos circunflexos, para que mais formas personalizadas possam ser fornecidas. (Ie513c, b/374766087, b/418854637).
- Remoção de CoreEntitycomoPublishedApi(Ifee05)
Correções de bugs
- Correção do problema em que SpatialDialogpiscava ao ser renderizado. (Ife73c, b/401619909)
- Correção de um problema em que SpatialDialognão podia encobrir o painel de atividades. (I8ca6c, b/367442109)
- Correção de um problema em que a caixa de diálogo de realidade estendida não mostrava alguns conteúdos (I17cd5, b/418062437).
- Correção de um problema em que o SpatialPopupera dispensado quando clicado dentro do 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 da sobreposição de topBarcom o 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
- Adição da interface CompositionLocalConsumerSubspaceModifierNodepara permitir que tiposSubspaceModifierpersonalizados acessem valores locais de composição.
- Adicionamos uma nova API SpatialPanelque segue o estilo de implementação doAndroidViewdo Compose e descontinuamos aViewBased SpatialPanelanterior.
- Adicionado o objeto complementar VolumeConstraints.Unbounded, que representa restrições ilimitadas.
- Adição de SubspaceModifier.onPointSourceParamspara permitir uma fonte de áudio espacializada.
- Um ApplicationSubspacepúblico foi adicionado, oferecendoVolumeConstraintsopcionais para definir uma área 3D em que o app pode renderizar conteúdo espacial. Por padrão, se nenhuma restrição for especificada, o subespaço será limitado pelo campo de visão atual daSpatialUserem largura e altura. Os usuários podem fornecer restrições a serem usadas se o campo de visão não puder ser determinado. 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.SpatialExternalSurfacepode ser personalizado com modificadores (exceto alfa) e um efeito de esmaecimento 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 34 ou mais da API. (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 volta agora funciona em painéis espaciais sem atividades incorporadas. Para que o processamento de volta funcione, é necessário especificar android:enableOnBackInvokedCallback="true"no manifesto do Android.
- O processamento de volta agora funciona em caixas de diálogo espaciais. Para que o processamento de volta funcione, é necessário especificar android:enableOnBackInvokedCallback="true"no manifesto do Android.
- Os SpatialPanels baseados em Compose e em visualização agora podem se dimensionar com base no conteúdo.
- Agora, os desenvolvedores podem definir seus próprios valores de SpatialElevationLevelpersonalizados e não estão limitados aos níveis predefinidos.
- Agora é possível personalizar o nível de elevação do Orbiter usando o parâmetro elevation.
- Agora, o subespaço 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, serão usados os valores padrão de largura e altura.
- Adição dos 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 das APIs espaciais, comoSpatialRoweSpatialPanel. Para depurar árvores de composição espacial, useSubspaceModifier.testTag.
- Removemos uma sobrecarga sem suporte 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 separados ou em processo de separação.
- A API SpatialRowfoi dividida emSpatialRoweSpatialCurvedRow. Se você usava o parâmetrocurveRadiusdeSpatialRow, agora useSpatialCurvedRow, que oferece o mesmo comportamento.
- MainPanele- ActivityPanelnão têm mais barras de título quando executados em uma imagem do sistema igualmente recente.
- Os modificadores de alfa e escala agora podem ser combinados e multiplicam os valores para o valor final de alfa ou escala aplicado.
- O callback onPoseChangedo modificador Movable foi otimizado para realizar movimentos de postura mais suaves.
- Agora, os modificadores móveis e redimensionáveis vão executar os callbacks na linha de execução principal para garantir que as mudanças de estado acionem a recomposição.
- Adição da 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 tela de escurecimento para quando um SpatialDialogé mostrado. (Ic4594)
- As solicitações de readequação feitas enquanto os nós modificadores estão separados agora serão ignoradas.
- Remoção das fases de reajuste acionadas pelos modificadores Movable e Resizable.
- Corrigimos uma falha no elemento combinável MainPanel()que ocorria quando uma das dimensões era definida como zero, diretamente ou durante um cálculo de layout, por exemplo, um cálculo deSpatialRow/SpatialColumn. Em vez disso, o painel vai ficar oculto. Essa correção aborda especificamente 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 acessibilidade da interface.
- Correção do problema com maintainAspectRatiodo modificador redimensionável. A proporção será mantida.
- Foi corrigido um problema com subespaços aninhados que eram posicionados incorretamente em um único frame.
- Correção de um problema em que, às vezes, os cantos arredondados não eram aplicados quando deveriam ser.
- NestedSubspacesnão vai mais aparecer por 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 escurecer o conteúdo quando uma caixa de diálogo espacial é ativada.
- A API Orbiteragora pode ser usada em contextosSubspaceComposablee vai anexar Orbiters ao elemento combinável pai mais próximo com base 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 do subespaço movido aumenta ou diminui. Ele também vai manter qualquer escala explícita que tinha antes do movimento.
Mudanças na API
- SessionCallbackProviderfoi removido em favor de- SpatialCapabilities.
Outras mudanças
- Reduzimos minSDKpara 24. Todas as APIs do Jetpack XR ainda exigem a API 34 no tempo 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.
- Atualize os níveis de elevação espacial para corresponder à especificação de UX mais recente.
- Implemente a interface SubspaceSemanticsInfoemMeasurableLayout.
- SubspaceModifierElementfoi renomeado como- SubspaceModifierNodeElement
Correções de bugs
- Correções para estabilizar a ordenação de SubspaceModifier.SubspaceModifiervai funcionar de maneira mais confiável. Agora, os modificadores de deslocamento, rotação, escala, móvel e redimensionável 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 portando um app 2D para XR ou criando um novo app do zero. Essa biblioteca oferece elementos combináveis de subespaço e espaciais, como painéis espaciais e orbitadores, que permitem colocar sua interface 2D do Compose ou baseada em Views em um layout espacial. Ele apresenta o elemento combinável do subespaço de volume, que permite posicionar 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 manter 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 XR e outros formatos sem precisar elevar o estado por toda a árvore da interface ou reestruturar o app.
- SpatialPanel: um painel espacial é um elemento combinável de subespaço que permite mostrar conteúdo do app. Por exemplo, você pode exibir a reprodução de vídeo, imagens estáticas ou qualquer outro conteúdo em um painel espacial. 
- Orbitador: um orbitador é um componente espacial de UI. Ele foi projetado para ser anexado a um painel espacial correspondente e contém itens de ação contextual e de navegação relacionados a esse painel. Por exemplo, se você criou um painel espacial para mostrar conteúdo de vídeo, é possível adicionar controles de reprodução de vídeo dentro de um orbiter. 
- Volume: posicione 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,- SpatialBoxe- SpatialLayoutSpacer. Use- SubspaceModifiers para personalizar seu layout.
- Componentes de UI espacial: esses elementos podem ser reutilizados na sua UI 2D, e os atributos espaciais só ficam visíveis quando os recursos espaciais estão ativados. - SpatialDialog: o painel vai recuar um pouco na profundidade Z para mostrar uma caixa de diálogo elevada.
- SpatialPopUp: o painel vai recuar um pouco na profundidade Z para mostrar um pop-up elevado.
- SpatialElevation:- SpatialElevationLevelpode ser definido para adicionar elevação.
 
- SpatialCapabilities: as funcionalidades espaciais podem mudar à medida que os usuários interagem com o app ou o sistema, ou até mesmo ser alteradas pelo próprio app, por exemplo, ao passar para o Espaço Compacto ou o Espaço Completo. Para evitar problemas, seu app precisa verificar - LocalSpatialCapabilities.currentpara determinar quais APIs são compatíveis no ambiente atual.- isSpatialUiEnabled: elementos de interface espacial (por exemplo, SpatialPanel)- isContent3dEnabled: objetos 3D- isAppEnvironmentEnabled: o ambiente- isPassthroughControlEnabled: se o aplicativo pode controlar o estado de transmissão direta- isSpatialAudioEnabled: á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 Jetpack XR exigem a solicitação da permissão android.permission.SCENE_UNDERSTANDINGno AndroidManifest.
- Quando um app é iniciado diretamente no Modo de Espaço Ampliado usando a propriedade PROPERTY_XR_ACTIVITY_START_MODEno manifesto, as atividades/aplicativos são abertos inicialmente no Modo de Espaço Compacto antes de fazer a transição para o Modo de Espaço Ampliado.
- Os glTFs em elementos combináveis 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.
