Les jetons de conception OEM sont une implémentation Android Automotive OS (AAOS) du système Material Design. Contrairement à l'approche algorithmique ou de sélection par l'utilisateur pour les valeurs de jeton sur mobile, les OEM désignent des valeurs de jeton de conception. Les jetons de conception représentent les petites décisions de conception répétées qui composent le style visuel d'un système de conception et remplacent les valeurs statiques par des noms explicites. Les jetons sont analogues à ceux définis 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 composants illustrés à 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 comme suit.
- Fournit des API pour accéder aux valeurs OEM des jetons.
- Active le remplacement des références de jetons dans le thème par des valeurs OEM nécessitant une confirmation.
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.
- Valeur booléenne permettant d'activer les valeurs de jeton OEM.
- Style qui fournit des valeurs de jeton OEM.
Pour permettre aux OEM de posséder ce composant de bibliothèque partagée, y compris un nom de package défini par l'OEM, les OEM peuvent créer un forçage de l'implémentation de la bibliothèque partagée.
Figure 2. Forcer une implémentation de bibliothèque partagée.
Bibliothèque partagée OEM
Les forçages OEM du composant de bibliothèque partagée permettent à l'OEM de posséder la bibliothèque tout en conservant la compatibilité avec les autres composants de la bibliothèque de jetons OEM en fournissant un moyen de définir le nom et la signature du package par les OEM, tout en laissant l'implémentation de la bibliothèque partagée inchangée.
Les forçages pour une bibliothèque partagée peuvent être définis comme indiqué ci-dessous:
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 des valeurs de jeton OEM.
Personnalisations de la bibliothèque partagée OEM
Pour prendre en charge différents schémas de valeurs de jeton (par exemple, la différenciation du modèle ou du mode de conduite), les OEM peuvent fournir des valeurs dynamiques pour les jetons en ciblant la bibliothèque partagée de l'OEM avec des superpositions de ressources d'exécution (RRO, Runtime Resource Overlays). Pour en savoir plus, consultez la section Modifier la valeur des ressources d'une application au moment de l'exécution.
Pour définir des valeurs de jeton, consultez Spécifier des 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 l'OEM, les OEM doivent d'abord activer le forçage des valeurs de jeton par défaut en configurant la valeur booléenne enable_oem_tokens
sur true
.
Valeurs du jeton RRO
De même que les valeurs de jeton sont définies dans OemStyle
, les RRO peuvent être utilisés pour modifier le style afin de 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 le nom de la bibliothèque partagée.
Configurer le chargement en dernier
Les systèmes qui incluent une implémentation OEM d'une bibliothèque partagée de jetons doivent configurer le système pour qu'il charge la bibliothèque partagée après les classes d'application. Pour ce faire, incluez le nom de la bibliothèque (com.android.oem.tokens
) dans la configuration config_sharedLibrariesLoadedAfterApp
sur le système. Si vous avez accès aux services Google Automotive (GAS), cette exigence est appliquée.
<!-- 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
Vous trouverez ci-dessous les bonnes pratiques concernant la bibliothèque de jetons OEM.
Activer une stratégie de mise à jour flexible
Consultez les stratégies ci-dessous pour vous assurer de la flexibilité de vos 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 être livrés avec la bibliothèque ou la bibliothèque doit être ajoutée dans le cadre d'une mise à jour Over-the-Air (OTA) (pour en savoir plus, consultez la section Mises à jour OTA). Toutefois, l'inclusion d'une implémentation de bouchon d'un forçage OEM d'une bibliothèque partagée de jetons OEM sur une image système permet de mettre à jour une implémentation fonctionnelle complète sur les appareils à une date ultérieure sans nécessiter une mise à jour OTA.
RRO de bibliothèque partagée
Bien qu'il ne soit pas obligatoire d'installer les RRO en tant qu'applications système, cela permet d'obtenir un comportement de mise à jour qui peut être souhaité.
- Mises à jour automatiques des applications lorsque les utilisateurs ne sont pas connectés.
- L'utilisateur ne peut pas la désinstaller (il ne peut désinstaller que les mises à jour).