жетоны OEM-дизайна

Токены OEM-дизайна представляют собой реализацию системы Material Design в Android Automotive OS (AAOS). В отличие от алгоритмического или пользовательского подхода к выбору значений токенов на мобильных устройствах, OEM-производители назначают значения токенов проектирования. Токены дизайна представляют собой небольшие повторяющиеся дизайнерские решения, которые составляют визуальный стиль системы дизайна и заменяют статические значения понятными именами. Токены аналогичны тем, которые определены в системе Material Design.

Библиотека OEM-токенов

На токены OEM-дизайна ссылаются через библиотеку токенов OEM, которая состоит из трех компонентов, показанных на рисунке 1.

Рисунок 1. Компоненты библиотеки токенов OEM.

Статическая библиотека

Компонент статической библиотеки библиотеки токенов OEM облегчает доступ к значениям токенов следующим образом.

  • Предоставляет API для доступа к значениям OEM для токенов.
  • Включает переопределение ссылок токенов в теме значениями OEM.

Общая библиотека

Компонент общей библиотеки отвечает за определение следующего:

  • Название библиотеки.
  • Логическое разрешение для включения значений OEM-токенов.
  • Стиль, предоставляющий значения токенов OEM.

Чтобы обеспечить право собственности OEM на этот компонент общей библиотеки, включая имя пакета, определенное OEM, OEM-производители могут создать переопределение реализации общей библиотеки.

Рисунок 2. Переопределить реализацию общей библиотеки.

Общая OEM-библиотека

Переопределения компонента общей библиотеки OEM позволяют OEM-владельцам библиотеки, сохраняя при этом совместимость с другими компонентами в библиотеке токенов OEM, предоставляя средства для установки имени пакета и подписи OEM-производителями, оставляя при этом реализацию общей библиотеки без изменений.

Переопределения для общей библиотеки можно определить, как показано ниже:

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

Чтобы задать значения токенов, см. раздел Указание значений токенов OEM .

Настройка общей библиотеки OEM

Чтобы поддерживать различные схемы значений токенов (например, дифференциацию модели или режима привода), OEM-производители могут предоставлять динамические значения для токенов, нацеливая общую библиотеку OEM на наложения ресурсов времени выполнения (RRO). Дополнительные сведения см. в разделе Изменение значения ресурсов приложения во время выполнения .

Чтобы задать значения токенов, см. раздел Указание значений токенов OEM .

Укажите значения OEM-токенов

Чтобы указать значения токенов, установите для соответствующего атрибута в стиле OemStyle необходимое значение.

<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

Чтобы приложения могли получить доступ к значениям токенов, предоставленных OEM, OEM-производители должны сначала разрешить переопределение значений токенов по умолчанию, настроив enable_oem_tokens равным true .

Значения токенов RRO

Аналогично тому, как значения токенов задаются в OemStyle , RRO можно использовать для изменения стиля для предоставления альтернативных значений токенов.

<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 должны установить атрибуты общей библиотеки в стиле, указав имя общей библиотеки.

Настроить загрузку последней

Системы, включающие OEM-реализацию общей библиотеки токенов, должны настроить систему для загрузки общей библиотеки после классов приложения. Для этого включите имя библиотеки ( com.android.oem.tokens ) в конфигурацию config_sharedLibrariesLoadedAfterApp в системе. Если у вас есть доступ к Google Automotive Services (GAS), это является обязательным требованием.

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

Лучшие практики

Ниже описаны лучшие практики использования библиотеки токенов OEM.

Включите гибкую стратегию обновления

Ознакомьтесь со стратегиями ниже, чтобы обеспечить гибкость в отношении обновлений.

Общая библиотека OEM

Поскольку общесистемные библиотеки должны быть предварительно установлены в образы системы, устройства должны либо поставляться с библиотекой, либо библиотека должна быть добавлена ​​как часть беспроводного обновления (OTA) (более подробную информацию см. в разделе OTA-обновления ). Однако включение заглушки OEM-переопределения общей библиотеки OEM-токенов в образ системы позволяет позднее распространить обновление до полностью работающей реализации на устройства без необходимости OTA.

Общие библиотеки RRO

Хотя нет необходимости устанавливать RRO в качестве системных приложений, это обеспечивает некоторое поведение обновления, которое может быть желательным.

  • Автоматические обновления приложений, когда пользователи не вошли в систему.
  • Не может быть удален пользователем (пользователи могут удалять только обновления ).