OEM-Designtokens

OEM-Design-Tokens sind eine Android Automotive OS-Implementierung (AAOS) des Material Design-Systems. Im Gegensatz zum algorithmischen Ansatz oder zur Nutzerauswahl für Tokenwerte auf Mobilgeräten legen OEMs die Design-Tokenwerte fest. Design-Tokens repräsentieren die kleinen, wiederholten Designentscheidungen, die den visuellen Stil eines Designsystems ausmachen, und ersetzen statische Werte durch selbsterklärende Namen. Tokens sind analog zu denen, die vom Material Design-System definiert sind.

OEM-Tokenbibliothek

OEM-Design-Tokens werden über die OEM-Token-Bibliothek referenziert, die aus den drei in Abbildung 1 dargestellten Komponenten besteht.

Abbildung 1: OEM-Tokenbibliothekskomponenten

Statische Bibliothek

Die statische Bibliothekskomponente der OEM-Tokenbibliothek ermöglicht den Zugriff auf Tokenwerte folgendermaßen:

  • Bietet APIs für den Zugriff auf OEM-Werte für Tokens.
  • Ermöglicht das Überschreiben von Tokenreferenzen im Design mit OEM-Werten.

Gemeinsam genutzte Bibliothek

Die Komponente „Gemeinsam genutzte Bibliothek“ ist für Folgendes verantwortlich:

  • Name der Bibliothek.
  • Boolescher Wert, mit dem OEM-Tokenwerte aktiviert werden.
  • Stil, der OEM-Tokenwerte bereitstellt.

Um die Eigentumsrechte des OEM an dieser gemeinsam genutzten Bibliothekskomponente zu berücksichtigen, einschließlich eines vom OEM definierten Paketnamens, können OEMs eine Überschreibung der Implementierung der gemeinsam genutzten Bibliothek erstellen.

Abbildung 2: Implementierung einer gemeinsam genutzten Bibliothek überschreiben

Gemeinsam genutzte OEM-Bibliothek

OEM-Überschreibungen der gemeinsamen Bibliothekskomponente ermöglichen die Inhaberschaft der Bibliothek durch den OEM bei gleichzeitiger Beibehaltung der Kompatibilität mit anderen Komponenten in der OEM-Tokenbibliothek. So können der Paketname und die Signatur von OEMs festgelegt werden, während die Implementierung der gemeinsamen Bibliothek ansonsten unverändert bleibt.

Überschreibungen für eine freigegebene Bibliothek können so definiert werden:

override_android_app {
    name: "[OEM]-token-shared-lib",
    base: "token-shared-lib",
    package_name: "com.[OEM].sharedlib",
    rename_resources_package: false,
    certificate: 
}

Informationen zum Festlegen von Tokenwerten finden Sie unter OEM-Tokenwerte angeben.

Anpassungen der gemeinsam genutzten Bibliothek des OEM

Um verschiedene Schemata für Tokenwerte zu unterstützen (z. B. Unterscheidung nach Modell oder Fahrmodus), können OEMs dynamische Werte für Tokens bereitstellen, indem sie die freigegebene OEM-Bibliothek mit Runtime Resource Overlays (RROs) anvisieren. Weitere Informationen finden Sie unter Wert der Ressourcen einer App zur Laufzeit ändern.

Informationen zum Festlegen von Tokenwerten finden Sie unter OEM-Tokenwerte angeben.

OEM-Tokenwerte angeben

Wenn Sie Tokenwerte angeben möchten, legen Sie das entsprechende Attribut im Stil OemStyle auf den erforderlichen Wert fest.

<resources>
    <style name="OemStyle">
        <item name="colorPrimary">#B0C5FF</item>
        <item name="colorOnPrimary">#002B76</item>
        <item name="colorPrimaryContainer">#003FA4</item>
        <item name="colorOnPrimaryContainer">#D9E2FF</item>
        …
    </style>
</resources>

OEM-Werte aktivieren

Damit Apps auf vom OEM bereitgestellte Tokenwerte zugreifen können, müssen OEMs zuerst das Überschreiben der Standardtokenwerte aktivieren, indem sie den booleschen Wert enable_oem_tokens auf true konfigurieren.

RRO-Tokenwerte

Ähnlich wie bei der Festlegung von Tokenwerten in OemStyle können RROs verwendet werden, um den Stil zu ändern und alternative Tokenwerte anzugeben.

<resources>
    <style name="OemStyle">
        <item name="com.android.oem.tokens:colorPrimary">#B0C5FF</item>
        <item name="com.android.oem.tokens:colorOnPrimary">#002B76</item>
        <item name="com.android.oem.tokens:colorPrimaryContainer">#003FA4</item>
        <item name="com.android.oem.tokens:colorOnPrimaryContainer">#D9E2FF</item>
        …
    </style>
</resources>

RROs sollten die Attribute der freigegebenen Bibliothek für den Stil festlegen, indem sie den Namen der freigegebenen Bibliothek angeben.

Ladevorgang zuletzt konfigurieren

Bei Systemen mit einer OEM-Implementierung einer Token-Bibliothek muss das System so konfiguriert werden, dass die Bibliothek nach den App-Klassen geladen wird. Fügen Sie dazu den Namen der Bibliothek (com.android.oem.tokens) in die config_sharedLibrariesLoadedAfterApp-Konfiguration auf dem System ein. Wenn Sie Zugriff auf Google Automotive Services (GAS) haben, ist dies eine Pflichtvoraussetzung.

<!-- The OEM token shared library will be loaded after app classes -->
<string-array name="config_sharedLibrariesLoadedAfterApp" translatable="false">
    <item>com.android.oem.tokens</item>
</string-array>

Best Practices

Unten finden Sie Best Practices für die OEM-Tokenbibliothek.

Flexible Updatestrategie aktivieren

Mit den folgenden Strategien können Sie für Flexibilität bei Updates sorgen.

Gemeinsam genutzte OEM-Bibliothek

Da systemfreigegebene Bibliotheken auf System-Images vorinstalliert sein müssen, müssen Geräte entweder mit der Bibliothek geliefert werden oder die Bibliothek muss im Rahmen eines Over-the-Air-Updates (OTA-Update) hinzugefügt werden. Weitere Informationen finden Sie unter OTA-Updates. Wenn Sie jedoch eine Stub-Implementierung eines OEM-Überschreibens einer freigegebenen OEM-Token-Bibliothek in einem System-Image einbinden, kann ein Update auf eine vollständig funktionierende Implementierung zu einem späteren Zeitpunkt auf die Geräte übertragen werden, ohne dass ein Over-the-air-Update erforderlich ist.

RROs für gemeinsam genutzte Bibliotheken

RROs müssen zwar nicht als System-Apps installiert werden, dies bietet jedoch einige gewünschte Aktualisierungsfunktionen.

  • Automatische Updates von Apps, wenn Nutzer nicht angemeldet sind
  • Kann vom Nutzer nicht deinstalliert werden (Nutzer können nur Updates deinstallieren).