Jetons de conception OEM

Les jetons de conception OEM sont une implémentation d'Android Automotive OS (AAOS) Material Design du système d'exploitation. Contrairement à l'approche algorithmique ou de sélection de l'utilisateur pour les valeurs de jeton sur mobile, les OEM désignent les valeurs des jetons de conception. Les jetons de conception représentent les petites décisions de conception répétées qui constituent une le style visuel du système de conception et remplacer les valeurs statiques par des noms explicites. Les jetons sont analogues à celles définies par le système Material Design.

Bibliothèque de jetons OEM

Les jetons de conception OEM sont référencés via la bibliothèque de jetons OEM, qui se compose des trois illustrés dans la figure 1.

Figure 1 : Composants de la bibliothèque de jetons OEM.

Bibliothèque statique

Le composant de bibliothèque statique de la bibliothèque de jetons OEM facilite l'accès aux valeurs de jeton suit.

  • Fournit des API permettant d'accéder aux valeurs OEM des jetons.
  • Permet de remplacer les références de jetons dans le thème par les valeurs OEM (avec option d'acceptation).

Bibliothèque partagée

Le composant de bibliothèque partagée est chargé de définir les éléments suivants:

  • Nom de la bibliothèque.
  • Option booléenne pour l'activation des valeurs de jetons OEM.
  • Style qui fournit des valeurs de jeton OEM.

Pour tenir compte de la propriété par l'OEM de ce composant de bibliothèque partagée, y compris d'un package défini par l'OEM les OEM peuvent créer un remplacement de l'implémentation de la bibliothèque partagée.

Figure 2. Ignorer l'implémentation d'une bibliothèque partagée

Bibliothèque partagée OEM

Les forçages OEM du composant de bibliothèque partagée permettent à l'OEM de devenir propriétaire de la bibliothèque maintenir la compatibilité avec d'autres composants de la bibliothèque de jetons OEM en fournissant un moyen le nom du package et la signature doivent être définis par les OEM tout en laissant la mise en œuvre autrement non modifiée.

Les remplacements pour une bibliothèque partagée peuvent être définis comme suit:

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

Pour définir des valeurs de jeton, consultez Spécifier les valeurs de jeton OEM.

<ph type="x-smartling-placeholder">

Personnalisation de la bibliothèque partagée OEM

Pour permettre des schémas variés pour les valeurs de jeton (par exemple, différenciation du modèle ou du mode d'entraînement), Les OEM peuvent fournir des valeurs dynamiques pour les jetons en ciblant la bibliothèque partagée OEM avec Runtime Superpositions de ressources (RRO). Pour en savoir plus, consultez Modifiez la valeur des ressources d'une application au moment de l'exécution.

Pour définir des valeurs de jeton, consultez Spécifier les valeurs de jeton OEM.

Spécifier les valeurs des jetons OEM

Pour spécifier des valeurs de jeton, définissez l'attribut correspondant dans le style OemStyle sur la valeur requise.

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

Activer les valeurs OEM

Pour que les applications puissent accéder aux valeurs de jeton fournies par les OEM, les OEM doivent d'abord activer le remplacement des valeurs par défaut en configurant la valeur booléenne enable_oem_tokens sur true.

Valeurs du jeton RRO

De la même manière que les valeurs de jeton sont définies dans OemStyle, les RRO peuvent être utilisées pour modifier le pour fournir d'autres valeurs de jeton.

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

Les RRO doivent définir les attributs de la bibliothèque partagée sur le style en spécifiant la bibliothèque partagée son nom.

Configurer le dernier chargement

Les systèmes qui incluent une implémentation OEM d'une bibliothèque partagée de jetons doivent configurer le système pour charger la bibliothèque partagée après les classes de l'application. Pour ce faire, indiquez le nom de la bibliothèque (com.android.oem.tokens) dans le config_sharedLibrariesLoadedAfterApp sur le système. Si vous avez accès à Google Automotive Services (GAS), il s'agit d'un cette exigence.

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

Bonnes pratiques

Les bonnes pratiques concernant la bibliothèque de jetons OEM sont décrites ci-dessous.

Mise en place d'une stratégie de mise à jour flexible

Consultez les stratégies ci-dessous pour bénéficier d'une certaine flexibilité concernant les mises à jour.

Bibliothèque partagée OEM

Comme les bibliothèques partagées par le système doivent être préinstallées sur les images système, les appareils doivent : avec la bibliothèque. Sinon, celle-ci doit être ajoutée dans le cadre d'une mise à jour Over The Air (OTA) consultez la section Mises à jour OTA). Toutefois, l'implémentation bouchon d'un remplacement OEM d'une bibliothèque partagée de jetons OEM sur une l’image système permet de mettre à jour une implémentation complète et fonctionnelle d’être transmise aux appareils à un sans passer par une agence de voyages en ligne.

RRO de la bibliothèque partagée

Bien qu'il n'y ait aucune obligation d'installer les RRO en tant qu'applications système, cela offre une le comportement de mise à jour souhaité.

  • Mises à jour automatiques des applications lorsque les utilisateurs ne sont pas connectés.
  • ne peuvent pas être désinstallées par l'utilisateur (les utilisateurs peuvent uniquement désinstaller les mises à jour) ;