Architektonische Schichtung und API-Benennung

Der A2UI-Renderer für Jetpack Compose definiert eine mehrschichtige Architektur, mit der Sie die richtige Ebene für die Entwicklung auswählen können. Zusätzlich zur semantischen Schicht kommuniziert ein klares Benennungsschema die API-Absicht und steuert die Sichtbarkeit, um zu vermeiden, dass Ihr Klassenpfad mit unnötigen internen Typen überladen wird.

APIs werden basierend auf Anwendungsfall und Sichtbarkeit in zwei primäre Kategorien unterteilt:

  1. APIs für App- und Komponentenentwickler: Öffentliche APIs, die für die direkte Verwendung vorgesehen sind, haben klare, prägnante Namen mit dem Präfix A2ui (oder Designsystem- und Testpräfixe wie MaterialA2ui und A2uiTest). Beispiele sind A2uiCatalog, A2uiComponent und A2uiException.
  2. APIs für Integratoren von UI-Frameworks: APIs, die von Bibliotheken verwendet werden, die die Core-Datenebene und UI-Frameworks überbrücken, haben beschreibende Namen mit dem Präfix A2uiCore. Diese APIs sind nicht für den direkten Anwendungsbezug vorgesehen und bleiben für Standardanwendungscode verborgen. Beispiele sind A2uiCoreCatalog, A2uiCoreDataModel und A2uiCoreSurfaceModel.

Da die Core-Datenebene Typen aus beiden Kategorien enthält, wird sie auf zwei separate Artefakte verteilt: androidx.a2ui:a2ui-model (für App-Entwickler) und androidx.a2ui:a2ui-engine (für Framework-Integratoren). Diese Struktur ermöglicht es Framework-Bibliotheken, a2ui-engine als Implementierungsabhängigkeit zu verwenden. Dadurch wird verhindert, dass A2uiCore-Typen öffentliche App-Klassenpfade beeinträchtigen.

Kategorie 1: App-Entwickler-APIs

In den folgenden Tabellen sind öffentliche APIs aufgeführt, die für Anwendungs- und Komponentenentwickler vorgesehen sind.

androidx.a2ui:a2ui-model

Typ Beschreibung
A2uiSurfaceModel Schreibgeschützte Schnittstelle, die eine UI-Oberfläche darstellt
A2uiMessageProcessor Einstiegspunkt-Typ für die Verarbeitung eingehender Nachrichten
A2uiMessageParser Parserschnittstelle für Protokollnachrichten
A2uiServerToClientMessage Nutzlast eingehender Nachrichten
A2uiSchema Typen zum Definieren von Schemas für Komponenten-Properties
A2uiException Ausnahmen, die über Schichten hinweg ausgelöst und behandelt werden
A2uiUserAction Aktions-Payload, die als Ergebnis von Nutzerinteraktionen erstellt wurde
A2uiClientToServerMessage Basistyp für alle Nutzlasten ausgehender Nachrichten
A2uiActionInterceptor Interceptor für Nutzeraktionen auf Data-Layer-Ebene
A2uiFunctionDefinition Definition einer lokalen Clientfunktion
A2uiDataPath Darstellung des JSON-Pointer-Pfads

androidx.a2ui.compose:compose-runtime

Typ Beschreibung
a2uiRuntimeMessageProcessor Erweiterungskonstruktor für den Nachrichtenverarbeiter
A2uiMessageParser Erweiterungskonstruktor für den Message-Parser
A2uiComponentState Schnittstelle, die den reaktiven Komponentenstatus darstellt
A2uiComponentModel Datenmodell für eine erfolgreich behobene Komponente
A2uiComponentProperties Stabile Property-Container zur Optimierung von Neukompositionen
A2uiProperty Stark typisierte Definition von Komponentenattributen
A2uiComponentScope Empfängerbereich für die Auswertung von Bindungen und untergeordneten Komponenten
A2uiComponentReference Zeiger zum Auflösen verschachtelter untergeordneter Komponenten

androidx.a2ui.compose:compose-ui

Typ Beschreibung
A2uiCatalog Schnittstelle und Erweiterungskonstruktor zum Definieren von Katalogen
A2uiComponent Schnittstelle zum Definieren von Compose-Komponentenimplementierungen
A2uiComponent (zusammensetzbar) Composable-Funktion, die die Benutzeroberfläche für eine Komponente ausgibt

androidx.compose.material3:material3-a2ui

Typ Beschreibung
A2uiSurface Zusammensetzbarer Einstiegspunkt, der eine Oberfläche rendert
materialA2uiBasicCatalogV1 Factory-Funktion zum Erstellen einer Instanz des Basic Catalog, die Material 3-Komponenten verwendet
MaterialA2uiBasicCatalogV1Defaults Standardmäßige Material 3-Implementierungen des einfachen Katalogs

androidx.a2ui.compose:compose-ui-testing

Typ Beschreibung
A2uiTestController Testcontroller zur Orchestrierung der Testausführung
A2uiComponentStub Stubbed- oder überschriebene Komponentenimplementierung
A2uiTestSurface Zusammensetzbare Funktion, die eine Testoberfläche rendert

Kategorie 2: APIs für Framework-Integratoren

In der folgenden Tabelle sind APIs aufgeführt, die für Framework-Integratoren vorgesehen sind.

androidx.a2ui:a2ui-engine

Typ Beschreibung
A2uiCoreCatalog Enthält eine Reihe von A2uiCoreComponentDefinition-Objekten.
A2uiCoreCatalogSerializer Serialisierungsprogramm für A2UI-Kataloge
A2uiCoreComponentDefinition Enthält Metadaten, die eine Komponente definieren
A2uiCoreSurfaceModel Implementiert A2uiSurfaceModel, macht Registrierungen verfügbar
A2uiCoreSurfaceGroupModel Implementiert A2uiSurfaceGroupModel
A2uiCoreMessageProcessor Implementiert A2uiMessageProcessor
A2uiCoreDataModel Inhaber des reaktiven Datenmodells
A2uiCoreComponentRegistry Komponenten-Registry
A2uiCoreValueResolver Data Accessor für die Verwendung im dynamischen Evaluator
A2uiCoreSchemaValidator Komponentenschema-Validator