Camadas de arquitetura e nomenclatura de API

O renderizador A2UI do Jetpack Compose define uma arquitetura em camadas que permite escolher a camada certa para criar. Além da camada semântica, um esquema de nomenclatura claro comunica a intenção da API e controla a visibilidade para evitar poluir o classpath com tipos internos desnecessários.

As APIs são organizadas em duas categorias principais com base no caso de uso e na visibilidade:

  1. APIs para desenvolvedores de apps e componentes: as APIs públicas destinadas ao uso direto têm nomes limpos e concisos com o prefixo A2ui ou prefixos de sistema de design e teste, como MaterialA2ui e A2uiTest. Exemplos incluem A2uiCatalog, A2uiComponent e A2uiException.
  2. APIs para integradores de frameworks de UI: as APIs usadas por bibliotecas que fazem a ponte entre a camada de dados principal e os frameworks de UI têm nomes descritivos com o prefixo A2uiCore. Essas APIs não são destinadas à referência direta de aplicativos e permanecem ocultas do código do aplicativo padrão. Os exemplos incluem A2uiCoreCatalog, A2uiCoreDataModel e A2uiCoreSurfaceModel.

Como a camada de dados principal contém tipos das duas categorias, ela é distribuída em dois artefatos separados: androidx.a2ui:a2ui-model (para desenvolvedores de apps) e androidx.a2ui:a2ui-engine (para integradores de frameworks). Essa estrutura permite que as bibliotecas de framework dependam de a2ui-engine como uma dependência de implementação, evitando que os tipos A2uiCore poluam os caminhos de classe públicos do app.

Categoria 1: APIs para desenvolvedores de apps

As tabelas a seguir listam APIs públicas destinadas a desenvolvedores de aplicativos e componentes.

androidx.a2ui:a2ui-model

Tipo Descrição
A2uiSurfaceModel Interface somente leitura que representa uma superfície da interface do usuário.
A2uiMessageProcessor Tipo de ponto de entrada para processar mensagens recebidas
A2uiMessageParser Interface do analisador para mensagens de protocolo
A2uiServerToClientMessage Payload da mensagem recebida
A2uiSchema Tipos usados para definir esquemas de propriedades de componentes
A2uiException Exceções geradas e processadas em todas as camadas
A2uiUserAction Payload de ação criado como resultado das interações do usuário
A2uiClientToServerMessage Tipo de base para todos os payloads de mensagens enviadas
A2uiActionInterceptor Interceptador de ações do usuário no nível da camada de dados
A2uiFunctionDefinition Definição de uma função de cliente local
A2uiDataPath Representação do caminho do ponteiro JSON

androidx.a2ui.compose:compose-runtime

Tipo Descrição
a2uiRuntimeMessageProcessor Extension constructor for the message processor
A2uiMessageParser Construtor de extensão para o analisador de mensagens.
A2uiComponentState Interface que representa o estado do componente reativo
A2uiComponentModel Modelo de dados para um componente resolvido com sucesso.
A2uiComponentProperties Contêiner de propriedade estável que otimiza recomposições
A2uiProperty Definição de propriedade de componente fortemente tipada
A2uiComponentScope Escopo do receptor para avaliar vinculações e componentes filhos
A2uiComponentReference Ponteiro para resolver componentes filhos aninhados.

androidx.a2ui.compose:compose-ui

Tipo Descrição
A2uiCatalog Interface e construtor de extensão para definir catálogos
A2uiComponent Interface para definir implementações de componentes do Compose
A2uiComponent (combinável) Função combinável que emite a interface de um componente

androidx.compose.material3:material3-a2ui

Tipo Descrição
A2uiSurface Ponto de entrada combinável que renderiza uma superfície
materialA2uiBasicCatalogV1 Função de fábrica para criar uma instância do catálogo básico que usa componentes do Material 3.
MaterialA2uiBasicCatalogV1Defaults Implementações padrão do Material 3 do catálogo básico

androidx.a2ui.compose:compose-ui-testing

Tipo Descrição
A2uiTestController Controlador de teste para orquestrar a execução do teste.
A2uiComponentStub Implementação de componentes substituídos ou simulados
A2uiTestSurface Função combinável que renderiza uma superfície de teste

Categoria 2: APIs integradoras de framework

A tabela a seguir lista as APIs destinadas a integradores de frameworks.

androidx.a2ui:a2ui-engine

Tipo Descrição
A2uiCoreCatalog Contém um conjunto de objetos A2uiCoreComponentDefinition
A2uiCoreCatalogSerializer Serializador para catálogos A2UI.
A2uiCoreComponentDefinition Contém metadados que definem um componente.
A2uiCoreSurfaceModel Implementa A2uiSurfaceModel, expõe registros.
A2uiCoreSurfaceGroupModel Implementa A2uiSurfaceGroupModel
A2uiCoreMessageProcessor Implementa A2uiMessageProcessor
A2uiCoreDataModel Detentor do modelo de dados reativo
A2uiCoreComponentRegistry Registro de componentes
A2uiCoreValueResolver Acessador de dados para uso no avaliador dinâmico.
A2uiCoreSchemaValidator Validador de esquema de componente