Fichas de diseño OEM

Los tokens de diseño OEM son una implementación del sistema operativo Android Automotive (AAOS) del sistema Material Design . A diferencia del enfoque algorítmico o de selección de usuario para los valores de token en dispositivos móviles, los OEM designan valores de token de diseño. Los tokens de diseño representan las decisiones de diseño pequeñas y repetidas que conforman el estilo visual de un sistema de diseño y reemplazan los valores estáticos con nombres que se explican por sí mismos. 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 a través de la biblioteca de tokens OEM, que consta de 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 de la siguiente manera.

  • Proporciona API para acceder a valores OEM para tokens.
  • Permite la anulación voluntaria de referencias de tokens en el tema con valores OEM.

Biblioteca compartida

El componente de biblioteca compartida es responsable de definir lo siguiente:

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

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

Figura 2. Anular una implementación de biblioteca compartida.

Biblioteca compartida OEM

Las anulaciones de OEM del componente de biblioteca compartida permiten la propiedad de la biblioteca por parte de OEM y, al mismo tiempo, mantienen la compatibilidad con otros componentes en la biblioteca de tokens de OEM al proporcionar un medio para que los OEM establezcan el nombre del paquete y la firma y, al mismo tiempo, no modifican la implementación de la biblioteca compartida.

Las anulaciones para una biblioteca compartida se pueden definir como se muestra a continuación:

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

Para establecer valores de token, consulte Especificar valores de token OEM .

Personalizaciones de bibliotecas compartidas OEM

Para admitir diversos esquemas de valores de token (por ejemplo, diferenciación de modelo o modo de unidad), los OEM pueden proporcionar valores dinámicos para los tokens dirigiéndose a la biblioteca compartida del OEM con superposiciones de recursos en tiempo de ejecución (RRO). Para obtener más información, consulte Cambiar el valor de los recursos de una aplicación en tiempo de ejecución .

Para establecer valores de token, consulte Especificar valores de token OEM .

Especificar valores de token OEM

Para especificar valores de token, establezca el atributo correspondiente en el estilo OemStyle en 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>

Opte por los valores OEM

Para que las aplicaciones puedan acceder a los valores de token proporcionados por los OEM, los OEM primero deben optar por anular los valores de token predeterminados configurando el booleano enable_oem_tokens en true .

Valores del token RRO

De manera similar a cómo se configuran los valores de token en OemStyle , los RRO se pueden usar para modificar el estilo y 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 el nombre de la biblioteca compartida.

Configurar la carga al final

Los sistemas que incluyen una implementación OEM de una biblioteca compartida de token deben configurar el sistema para cargar la biblioteca compartida después de las clases de la aplicación. Para hacerlo, incluya el nombre de la biblioteca ( com.android.oem.tokens ) en la configuración config_sharedLibrariesLoadedAfterApp en el sistema. Si tiene acceso a Google Automotive Services (GAS), esto se aplica como requisito.

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

Mejores prácticas

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

Habilite una estrategia de actualización flexible

Consulte las estrategias a continuación para asegurarse de tener flexibilidad con respecto a las actualizaciones.

Biblioteca compartida OEM

Como las bibliotecas compartidas del sistema deben estar preinstaladas en las imágenes del sistema, los dispositivos deben enviarse con la biblioteca o la biblioteca debe agregarse como parte de una actualización inalámbrica (OTA) (para obtener más información, consulte Actualizaciones OTA ). Sin embargo, incluir una implementación de código auxiliar de una anulación OEM de una biblioteca compartida de tokens OEM en una imagen del sistema permite enviar una actualización a una implementación funcional completa a los dispositivos en una fecha posterior sin necesidad de una OTA.

RRO de biblioteca compartida

Aunque no es necesario instalar RRO como aplicaciones del sistema, hacerlo proporciona cierto comportamiento de actualización que podría ser deseable.

  • Actualizaciones automáticas de aplicaciones cuando los usuarios no han iniciado sesión.
  • El usuario no puede desinstalarlo (los usuarios solo pueden desinstalar actualizaciones ).