Рендерер A2UI в Jetpack Compose определяет многоуровневую архитектуру, позволяющую выбирать подходящий слой для построения кода. Помимо семантической многоуровневости, четкая схема именования передает назначение API и контролирует видимость, избегая засорения пути к классам ненужными внутренними типами.
API-интерфейсы подразделяются на две основные категории в зависимости от сценария использования и видимости:
- API для разработчиков приложений и компонентов : Общедоступные API, предназначенные для непосредственного использования, имеют четкие и лаконичные имена с префиксом
A2ui (или префиксами систем проектирования и тестирования, такими как MaterialA2ui и A2uiTest ). Примеры включают A2uiCatalog , A2uiComponent и A2uiException . - API для интеграторов UI-фреймворков : API, используемые библиотеками, связывающими основной слой данных и UI-фреймворки, имеют описательные имена с префиксом
A2uiCore . Эти API не предназначены для прямого обращения к приложению и остаются скрытыми от стандартного кода приложения. Примеры включают A2uiCoreCatalog , A2uiCoreDataModel и A2uiCoreSurfaceModel .
Поскольку основной слой данных содержит типы из обеих категорий, он распределен по двум отдельным артефактам: androidx.a2ui:a2ui-model (для разработчиков приложений) и androidx.a2ui:a2ui-engine (для интеграторов фреймворков). Такая структура позволяет библиотекам фреймворков зависеть от a2ui-engine в качестве зависимости реализации, предотвращая загрязнение общедоступных путей к классам приложений типами A2uiCore .
Категория 1: API для разработчиков приложений
В приведенных ниже таблицах перечислены общедоступные API, предназначенные для разработчиков приложений и компонентов.
androidx.a2ui:a2ui-model
| Тип | Описание |
|---|
A2uiSurfaceModel | Интерфейс только для чтения, представляющий собой поверхность пользовательского интерфейса. |
A2uiMessageProcessor | Тип точки входа для обработки входящих сообщений |
A2uiMessageParser | Интерфейс парсера для протокольных сообщений |
A2uiServerToClientMessage | Содержимое входящего сообщения |
A2uiSchema | Типы, используемые для определения схем свойств компонентов. |
A2uiException | Исключения генерируются и обрабатываются на разных уровнях. |
A2uiUserAction | Полезная нагрузка действия, созданная в результате взаимодействия пользователя. |
A2uiClientToServerMessage | Базовый тип для всех полезных нагрузок исходящих сообщений. |
A2uiActionInterceptor | Перехватчик действий пользователя на уровне данных |
A2uiFunctionDefinition | Определение локальной клиентской функции |
A2uiDataPath | Представление пути в формате JSON-указателя |
androidx.a2ui.compose:compose-runtime
| Тип | Описание |
|---|
a2uiRuntimeMessageProcessor | Конструктор расширения для обработчика сообщений |
A2uiMessageParser | Конструктор расширения для парсера сообщений |
A2uiComponentState | Интерфейс, представляющий состояние реактивного компонента. |
A2uiComponentModel | Модель данных для успешно решенного компонента |
A2uiComponentProperties | Стабильный контейнер свойств, оптимизирующий рекомпозицию |
A2uiProperty | Определение строго типизированного свойства компонента |
A2uiComponentScope | Область действия приемника для оценки привязок и дочерних компонентов. |
A2uiComponentReference | Указатель для разрешения вложенных дочерних компонентов. |
androidx.a2ui.compose:compose-ui
| Тип | Описание |
|---|
A2uiCatalog | Конструктор интерфейса и расширения для определения каталогов. |
A2uiComponent | Интерфейс для определения реализаций компонентов Compose. |
A2uiComponent (композируемый) | Компонуемая функция, генерирующая пользовательский интерфейс для компонента. |
androidx.compose.material3:material3-a2ui
| Тип | Описание |
|---|
A2uiSurface | Составная точка входа, которая отображает поверхность. |
materialA2uiBasicCatalogV1 | Фабричная функция для создания экземпляра базового каталога, использующего компоненты Material 3. |
MaterialA2uiBasicCatalogV1Defaults | Реализации базового каталога Material 3 по умолчанию |
androidx.a2ui.compose:compose-ui-testing
| Тип | Описание |
|---|
A2uiTestController | Контроллер тестирования для организации выполнения тестов. |
A2uiComponentStub | Реализация компонента, созданного на основе заглушки или переопределения. |
A2uiTestSurface | Компонуемая функция, которая отображает тестовую поверхность. |
Категория 2: API интеграторов фреймворков
В таблице ниже перечислены API, предназначенные для интеграторов фреймворков.
androidx.a2ui:a2ui-engine
| Тип | Описание |
|---|
A2uiCoreCatalog | Содержит набор объектов A2uiCoreComponentDefinition |
A2uiCoreCatalogSerializer | Сериализатор для каталогов A2UI |
A2uiCoreComponentDefinition | Содержит метаданные, определяющие компонент. |
A2uiCoreSurfaceModel | Реализует A2uiSurfaceModel , предоставляет доступ к реестрам. |
A2uiCoreSurfaceGroupModel | Реализует A2uiSurfaceGroupModel |
A2uiCoreMessageProcessor | Реализует A2uiMessageProcessor |
A2uiCoreDataModel | Владелец реактивной модели данных |
A2uiCoreComponentRegistry | Реестр компонентов |
A2uiCoreValueResolver | Инструмент доступа к данным для использования в динамическом оценщике. |
A2uiCoreSchemaValidator | Валидатор схемы компонентов |