Tokens de diseño de OEM

Los tokens de diseño OEM son una implementación del SO Android Automotive (AAOS) de la Material Design en un sistema de archivos. A diferencia del enfoque algorítmico o de selección del usuario para los valores de token en dispositivos móviles, los OEMs designan valores de token de diseño. Los tokens de diseño representan las decisiones de diseño pequeñas y repetidas que conforman un el estilo visual del sistema de diseño y reemplazar los valores estáticos por nombres claros. Los tokens son análogos a los definidos por el sistema Material Design.

Biblioteca de tokens OEM

Se hace referencia a los tokens de diseño OEM mediante la biblioteca de tokens del OEM, que consiste en los tres componentes ilustrados en la Figura 1.

Figura 1: Componentes de la biblioteca de tokens OEM.

Biblioteca estática

El componente de biblioteca estática de la biblioteca de tokens OEM facilita el acceso a los valores de los tokens como sigue.

  • Proporciona APIs para acceder a los valores de OEM para los tokens.
  • Habilita la anulación de habilitación de las referencias de tokens en el tema con valores del OEM.

Biblioteca compartida

El componente de la biblioteca compartida se encarga de definir lo siguiente:

  • Nombre de la biblioteca.
  • Aceptación booleana para habilitar valores de token OEM.
  • Estilo que proporciona valores de token OEM.

Para adaptarse a la propiedad OEM de este componente de biblioteca compartida, incluido un paquete definido por el OEM , los OEMs pueden crear una anulación de la implementación de la biblioteca compartida.

Figura 2: Anula la implementación de una biblioteca compartida.

Biblioteca compartida de OEM

Las anulaciones OEM del componente de biblioteca compartida permiten la propiedad OEM de la biblioteca, mientras que mantener la compatibilidad con otros componentes de la biblioteca de tokens OEM proporcionando un medio para el nombre y la firma del paquete que establecerán los OEM y, al mismo tiempo, dejar la implementación de la versión de lo contrario, no se modificaría.

Las anulaciones para una biblioteca compartida se pueden definir de la siguiente manera:

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

Para establecer los valores de los tokens, consulta el artículo Especifica los valores de los tokens OEM.

Personalizaciones de bibliotecas compartidas OEM

Para admitir esquemas variados para valores de token (por ejemplo, diferenciación por modelo o modo de conducción), Los OEMs pueden proporcionar valores dinámicos para los tokens segmentando la biblioteca compartida del OEM con el entorno de ejecución. Superposiciones de recursos (RRO) Para obtener más información, consulta Cambia el valor de los recursos de una app en el tiempo de ejecución.

Para establecer los valores de los tokens, consulta el artículo Especifica los valores de los tokens OEM.

Especifica los valores del token OEM

Para especificar valores de token, establece el atributo correspondiente en el estilo OemStyle de la siguiente manera: el valor requerido.

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

Cómo habilitar los valores de OEM

Para que las apps puedan acceder a los valores de token proporcionados por el OEM, este primero debe habilitar la anulación predeterminada los valores de token configurando el valor booleano enable_oem_tokens como true.

Valores del token RRO

Al igual que como se establecen los valores de los tokens en OemStyle, las RROs se pueden usar para modificar el estilo para proporcionar valores de token alternativos.

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

Los RRO deben establecer los atributos de la biblioteca compartida en el estilo especificando la biblioteca compartida. de la fuente de datos.

Configurar la carga por última vez

Los sistemas que incluyen una implementación OEM de una biblioteca compartida de tokens deben configurar el sistema para cargar la biblioteca compartida después de las clases de la app. Para ello, incluye el nombre de la biblioteca (com.android.oem.tokens) en config_sharedLibrariesLoadedAfterApp config en el sistema. Si tienes acceso a los Servicios de Google Automotive (GAS), esto se aplica como un requisito de seguridad.

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

Prácticas recomendadas

A continuación, se describen las prácticas recomendadas para la biblioteca de tokens OEM.

Habilita una estrategia de actualización flexible

Consulta las estrategias que se incluyen a continuación para garantizar que seas flexible con respecto a las actualizaciones.

Biblioteca compartida de OEM

Debido a que las bibliotecas compartidas por el sistema deben estar preinstaladas en las imágenes del sistema, los dispositivos deben cumplir con uno de los siguientes requisitos: que se envía con la biblioteca o se debe agregar como parte de una actualización inalámbrica (OTA) (para conocer y más, consulta Actualizaciones OTA). Sin embargo, incluida la implementación de stub de una anulación de OEM de la biblioteca compartida de un token OEM en un de imágenes del sistema permite que la actualización de una implementación funcional completa se envíe a los dispositivos en un sin la necesidad de una OTA.

RRO de bibliotecas compartidas

Aunque no es necesario que las RRO se instalen como apps del sistema, hacerlo proporciona algunas y actualizar el comportamiento que podrías desear.

  • Actualizaciones automáticas de apps cuando los usuarios no acceden
  • El usuario no puede desinstalarla (los usuarios solo pueden desinstalar actualizaciones).