Tokeny projektowe OEM

Tokeny projektowe OEM to implementacja systemu Material Design w systemie Android Automotive OS (AAOS). W przeciwieństwie do podejścia opartego na algorytmie lub wyborze użytkownika w przypadku wartości tokenów na urządzeniach mobilnych, producenci OEM wyznaczają wartości tokenów projektowych. Tokeny projektu reprezentują małe, powtarzalne decyzje projektowe, które składają się na styl wizualny systemu projektowego i zastępują wartości statyczne oczywistymi nazwami. Tokeny są analogiczne do tych zdefiniowanych przez system Material Design.

Biblioteka tokenów OEM

Do tokenów projektu OEM odwołuje się biblioteka tokenów OEM, która składa się z trzech komponentów przedstawionych na rysunku 1.

Rysunek 1. Komponenty biblioteki tokenów OEM.

Biblioteka statyczna

Komponent biblioteki statycznej biblioteki tokenów OEM ułatwia dostęp do wartości tokenów w następujący sposób.

  • Zapewnia interfejsy API umożliwiające dostęp do wartości OEM dla tokenów.
  • Umożliwia opcjonalne zastępowanie odniesień do tokenów w motywie wartościami OEM.

Wspólna biblioteka

Komponent biblioteki współdzielonej jest odpowiedzialny za zdefiniowanie następujących elementów:

  • Nazwa biblioteki.
  • Opcja logiczna umożliwiająca włączenie wartości tokenów OEM.
  • Styl udostępniający wartości tokenów OEM.

Aby uwzględnić własność OEM tego komponentu biblioteki współdzielonej, w tym nazwę pakietu zdefiniowaną przez OEM, producenci OEM mogą utworzyć zastąpienie implementacji biblioteki współdzielonej.

Rysunek 2. Zastąp implementację biblioteki współdzielonej.

Biblioteka współdzielona OEM

Zastąpienia OEM komponentu biblioteki współdzielonej pozwalają na własność OEM biblioteki przy jednoczesnym zachowaniu zgodności z innymi komponentami w bibliotece tokenów OEM, zapewniając możliwość ustawienia nazwy pakietu i podpisu przez producentów OEM, pozostawiając implementację biblioteki współdzielonej w przeciwnym razie niezmodyfikowaną.

Zastąpienia biblioteki współdzielonej można zdefiniować w sposób pokazany poniżej:

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

Aby ustawić wartości tokenów, zobacz Określanie wartości tokenów OEM .

Dostosowania bibliotek współdzielonych OEM

Aby obsługiwać różne schematy wartości tokenów (na przykład zróżnicowanie modelu lub trybu napędu), producenci OEM mogą dostarczać dynamiczne wartości tokenów, kierując na bibliotekę współdzieloną OEM za pomocą nakładek zasobów wykonawczych (RRO). Aby dowiedzieć się więcej, zobacz Zmienianie wartości zasobów aplikacji w czasie jej wykonywania .

Aby ustawić wartości tokenów, zobacz Określanie wartości tokenów OEM .

Określ wartości tokenów OEM

Aby określić wartości tokenów, ustaw odpowiedni atrybut w stylu OemStyle na wymaganą wartość.

<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>

Włącz wartości OEM

Aby aplikacje mogły uzyskiwać dostęp do wartości tokenów dostarczonych przez producentów OEM, producenci OEM muszą najpierw wyrazić zgodę na zastępowanie domyślnych wartości tokenów, konfigurując wartość logiczną enable_oem_tokens na wartość true .

Wartości tokenów RRO

Podobnie jak w przypadku ustawiania wartości tokenów w OemStyle , RRO mogą służyć do modyfikowania stylu w celu zapewnienia alternatywnych wartości tokenów.

<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>

RRO powinny ustawić atrybuty biblioteki współdzielonej w stylu, podając nazwę biblioteki współdzielonej.

Skonfiguruj ładowanie jako ostatnie

Systemy zawierające implementację OEM tokenowej biblioteki współdzielonej muszą skonfigurować system tak, aby ładował bibliotekę współdzieloną po zajęciach aplikacji. Aby to zrobić, dołącz nazwę biblioteki ( com.android.oem.tokens ) w konfiguracji config_sharedLibrariesLoadedAfterApp w systemie. Jeśli masz dostęp do Google Automotive Services (GAS), jest to wymagane.

<!-- 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>

Najlepsze praktyki

Poniżej opisano najlepsze praktyki dotyczące biblioteki tokenów OEM.

Włącz elastyczną strategię aktualizacji

Zapoznaj się z poniższymi strategiami, aby zapewnić sobie elastyczność w zakresie aktualizacji.

Biblioteka współdzielona OEM

Ponieważ biblioteki współdzielone muszą być preinstalowane w obrazach systemu, urządzenia muszą być dostarczane z biblioteką lub biblioteka musi zostać dodana w ramach aktualizacji OTA (aby dowiedzieć się więcej, zobacz Aktualizacje OTA ). Jednakże uwzględnienie w obrazie systemu skrótowej implementacji zastąpienia OEM biblioteki współdzielonej tokenu OEM pozwala na przesłanie aktualizacji do w pełni działającej implementacji na urządzenia w późniejszym terminie bez konieczności korzystania z OTA.

RRO z biblioteki wspólnej

Chociaż nie ma wymogu instalowania RRO jako aplikacji systemowych, powoduje to pewne zachowanie aktualizacji, które może być pożądane.

  • Automatyczne aktualizacje aplikacji, gdy użytkownicy nie są zalogowani.
  • Użytkownik nie może odinstalować (użytkownicy mogą odinstalowywać tylko aktualizacje ).