Tokens de design do OEM

Os tokens de design OEM são uma implementação do Android Automotive OS (AAOS) do sistema Material Design. Ao contrário da abordagem de seleção de algoritmo ou do usuário para valores de token em dispositivos móveis, os OEMs designam valores de token de design. Os tokens de design representam as decisões de design pequenas e repetidas que compõem o estilo visual de um sistema de design e substituem valores estáticos por nomes autoexplicativos. Os tokens são análogos aos definidos pelo sistema do Material Design.

Biblioteca de tokens do OEM

Os tokens de design do OEM são referenciados pela biblioteca de tokens do OEM, que consiste nos três componentes ilustrados na Figura 1.

Figura 1. Componentes da biblioteca de tokens OEM.

Biblioteca estática

O componente de biblioteca estática da biblioteca de tokens OEM facilita o acesso aos valores de token da seguinte maneira.

  • Oferece APIs para acessar valores OEM de tokens.
  • Permite a substituição de referência de token com valores OEM no tema.

Biblioteca compartilhada

O componente de biblioteca compartilhada é responsável por definir o seguinte:

  • Nome da biblioteca.
  • Ativação booleana para ativar valores de token OEM.
  • Estilo que fornece valores de token OEM.

Para acomodar a propriedade do OEM desse componente de biblioteca compartilhada, incluindo um nome de pacote definido pelo OEM, os OEMs podem criar uma substituição da implementação da biblioteca compartilhada.

Figura 2. Substitua uma implementação de biblioteca compartilhada.

Biblioteca compartilhada do OEM

As substituições do OEM do componente da biblioteca compartilhada permitem a propriedade do OEM da biblioteca, mantendo a compatibilidade com outros componentes na biblioteca de tokens do OEM, fornecendo um meio para o nome do pacote e a assinatura serem definidos pelos OEMs, deixando a implementação da biblioteca compartilhada sem modificações.

As substituições de uma biblioteca compartilhada podem ser definidas conforme mostrado abaixo:

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

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

Personalizações da biblioteca compartilhada do OEM

Para oferecer suporte a esquemas variados para valores de token (por exemplo, diferenciação de modelo ou modo de unidade), os OEMs podem fornecer valores dinâmicos para tokens segmentando a biblioteca compartilhada do OEM com sobreposições de recursos de tempo de execução (RROs, na sigla em inglês). Para saber mais, consulte Mudar o valor dos recursos de um app durante a execução.

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

Especificar valores de token OEM

Para especificar valores de token, defina o atributo correspondente no estilo OemStyle como o valor necessário.

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

Ativar os valores OEM

Para que os apps possam acessar os valores de token fornecidos pelo OEM, os OEMs precisam primeiro ativar a substituição dos valores padrão configurando o booleano enable_oem_tokens como true.

Valores de token RRO

Da mesma forma que os valores de token são definidos em OemStyle, as RROs podem ser usadas para modificar o estilo e fornecer 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>

As RROs precisam definir os atributos da biblioteca compartilhada no estilo, especificando o nome da biblioteca compartilhada.

Configurar a carga final

Os sistemas que incluem uma implementação OEM de uma biblioteca compartilhada de tokens precisam configurar o sistema para carregar a biblioteca compartilhada após as classes do app. Para fazer isso, inclua o nome da biblioteca (com.android.oem.tokens) na configuração config_sharedLibrariesLoadedAfterApp do sistema. Se você tiver acesso aos Serviços automotivos do Google (GAS, na sigla em inglês), isso será aplicado como um 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>

Práticas recomendadas

As práticas recomendadas para a biblioteca de tokens OEM estão descritas abaixo.

Ativar uma estratégia de atualização flexível

Confira as estratégias abaixo para garantir a flexibilidade em relação às atualizações.

Biblioteca compartilhada do OEM

Como as bibliotecas compartilhadas do sistema precisam ser pré-instaladas nas imagens do sistema, os dispositivos precisam ser enviados com a biblioteca ou ela precisa ser adicionada como parte de uma atualização over-the-air (OTA). Para saber mais, consulte Atualizações OTA. No entanto, a inclusão de uma implementação de rascunho de uma substituição de OEM de uma biblioteca compartilhada de token de OEM em uma imagem do sistema permite que uma atualização para uma implementação totalmente funcional seja enviada aos dispositivos em uma data posterior sem precisar de uma OTA.

RROs de biblioteca compartilhada

Embora não haja um requisito para que os RROs sejam instalados como apps do sistema, fazer isso fornece um comportamento de atualização que pode ser desejado.

  • Atualizações automáticas de apps quando os usuários não estão conectados.
  • Não pode ser desinstalado pelo usuário (os usuários só podem desinstalar atualizações).