Архитектурная многоуровневая структура и именование API.

Рендерер A2UI в Jetpack Compose определяет многоуровневую архитектуру, позволяющую выбирать подходящий слой для построения кода. Помимо семантической многоуровневости, четкая схема именования передает назначение API и контролирует видимость, избегая засорения пути к классам ненужными внутренними типами.

API-интерфейсы подразделяются на две основные категории в зависимости от сценария использования и видимости:

  1. API для разработчиков приложений и компонентов : Общедоступные API, предназначенные для непосредственного использования, имеют четкие и лаконичные имена с префиксом A2ui (или префиксами систем проектирования и тестирования, такими как MaterialA2ui и A2uiTest ). Примеры включают A2uiCatalog , A2uiComponent и A2uiException .
  2. 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 Валидатор схемы компонентов