Tokens de design 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 algorítmica ou de seleção 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 pequenas e repetidas decisões de design que constituem 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 Material Design.

Biblioteca de tokens OEM

Os tokens de design OEM são referenciados por meio da biblioteca de tokens OEM, que consiste nos três componentes ilustrados abaixo.

Componentes da biblioteca de tokens OEM
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.

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

Biblioteca compartilhada

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

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

Para acomodar a propriedade OEM deste 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.

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

Biblioteca compartilhada OEM

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

As substituições para 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 de biblioteca compartilhada 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 direcionando a biblioteca compartilhada do OEM com Runtime Resource Overlays (RROs). Para saber mais, consulte Alterar o valor dos recursos de um aplicativo em tempo de execução .

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

Especifique valores de token OEM

Para especificar valores de token, configure o atributo correspondente no estilo OemStyle para 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>

Aceitar valores OEM

Para que os aplicativos possam acessar os valores de token fornecidos pelo OEM, os OEMs devem primeiro optar por substituir os valores de token padrão configurando o booleano enable_oem_tokens como true .

Valores de token RRO

Da mesma forma como os valores de token são definidos em OemStyle , os RROs podem ser usados ​​para modificar o estilo para 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>

Os RROs devem definir os atributos da biblioteca compartilhada no estilo especificando o nome da biblioteca compartilhada.

Configurar carregamento por último

Os sistemas que incluem uma implementação OEM de uma biblioteca compartilhada de token devem configurar o sistema para carregar a biblioteca compartilhada após as classes do aplicativo. Para fazer isso, inclua o nome da biblioteca ( com.android.oem.tokens ) na configuração config_sharedLibrariesLoadedAfterApp no ​​sistema. Se você tiver acesso ao Google Automotive Services (GAS), 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>

Melhores Práticas

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

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

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

Biblioteca compartilhada OEM

Como as bibliotecas compartilhadas do sistema precisam ser pré-instaladas nas imagens do sistema, os dispositivos devem ser fornecidos com a biblioteca ou a biblioteca deve ser adicionada como parte de uma atualização Over-the-Air (OTA) (para saber mais, consulte Atualizações OTA ). No entanto, incluir uma implementação stub de uma substituição OEM de uma biblioteca compartilhada de token OEM em uma imagem do sistema permite que uma atualização para uma implementação totalmente funcional seja enviada aos dispositivos posteriormente, sem a necessidade de um OTA.

RROs de biblioteca compartilhada

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

  • Atualizações automáticas de aplicativos 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 ).