Android 10 prend en charge la compilation
Partitions odm
à l'aide du système de compilation Android.
À propos des partitions ODM
Les fabricants de conceptions originales (ODM) personnalisent le fournisseur système sur puce (SoC) à leurs appareils spécifiques (leurs cartes). Ce leur permet d’implémenter des modules de noyau pour des composants spécifiques à une carte, daemons spécifiques à une carte ou leurs propres caractéristiques sur les couches d'abstraction matérielle (HAL). Il peut également vouloir remplacer ou personnaliser les composants du SoC.
Dans les versions antérieures d'Android, ces personnalisations empêchaient l'utilisation
image du fournisseur pour les appareils dotés du même SoC (ou de différents SoC, mais situés dans
de la même famille). Sur Android 10 ou version ultérieure, vous pouvez utiliser un
une partition odm
distincte à des fins de personnalisation, ce qui vous permet de
utiliser une image de fournisseur unique
pour plusieurs SKU de matériel.
Utiliser les partitions produit et ODM
Android 9 prend désormais en charge la compilation
product
partitions, ce qui permet d'utiliser une seule image système pour plusieurs logiciels
SKU fournis par différentes images product.img
. Alors que le
La partition product
est destinée aux SKU
La partition odm
est destinée aux SKU matériels.
Avec les partitions dédiées aux produits et ODM, vous pouvez utiliser system
pour héberger un code générique à partager entre de nombreux SKU.
Partition vendor
pour héberger le code BSP spécifique au SoC à partager
plusieurs appareils selon le SoC donné.
L'utilisation de partitions distinctes présente des inconvénients, tels que la difficulté à gérer d'espace disque (par exemple, vous devez réserver un espace limité pour des opérations ultérieures de croissance). Cependant, la prise en charge d'Android 10 pour partitions dynamiques supprime le problème de disque et facilite le repartitionnement d'un périphérique lors d'une Mise à jour Over The Air (OTA) possible.
Composants ODM
La partition odm
contient les composants ODM suivants :
(semblable à la partition vendor
), répertoriés dans le tableau suivant.
Composant spécifique à l'ODM | Position |
---|---|
Modules de noyau chargeables (LKM) | /odm/lib/modules/*.ko |
Bibliothèques natives | /odm/lib[64] |
HAL | /odm/lib[64]/hw |
Stratégie SE | /odm/etc/selinux |
Objet VINTF données | /odm/etc/vintf |
init.rc
fichiers |
/odm/etc/init |
Propriétés système | /odm/build.prop |
Superpositions de ressources d'exécution (RRO) | /odm/overlay/*.apk |
Applis | /odm/app/*.apk |
Applications privées | /odm/priv-app/*.apk |
Bibliothèques Java | /odm/framework/*.jar |
Configurations système du framework Android | /odm/etc/sysconfig/* et /odm/etc/permissions/* |
Aucune image personnalisée
Ne pas utiliser personnalisé images, car elles ne sont pas compatibles avec les éléments suivants:
- Installation d'un module sur une cible spécifique. Les images personnalisées permettent de copier des artefacts dans une image, mais pas installer un module dans une partition spécifique en spécifiant la partition cible dans une règle de compilation.
- Son !
custom_images
ne peut pas être compilé avec le système de compilation Soong. - Mise à jour OTA. Les images personnalisées sont utilisées des images ROM d'usine qui ne peuvent pas être OTA-ed.
Conserver les ABI entre les partitions
La partition odm
est une extension de vendor
.
partition. Lorsque vous étudiez la stabilité de l'interface binaire (ABI) d'application,
l'architecture suivante à l'esprit.
![Maintenir l'ABI entre les partitions](https://source.android.com/static/docs/core/architecture/bootloader/images/build_sys_to_prod_odm_partitions.png?authuser=6&hl=fr)
Figure 1 : Maintenir l'ABI entre les partitions.
- Il n'y a pas de stabilité d'ABI entre
odm
et Partitionsvendor
. Les deux partitions doivent être mises à niveau en même temps en temps réel. - Les partitions
odm
etvendor
peuvent dépendre de les uns les autres, mais la partitionvendor
doit fonctionner sans partitionodm
. - L'ABI entre
odm
etsystem
est la même que l'ABI entrevendor
etsystem
.
Interaction directe entre la partition product
et la
La partition vendor
ou odm
n'est pas
autorisé. (Cette règle est appliquée par SEpolicy.)
Implémenter des partitions ODM
Avant d'implémenter une nouvelle partition, consultez le AOSP associé modifications.
Configurer des partitions ODM
Pour configurer des partitions odm
, incluez ces options de compilation:
BOARD_ODMIMAGE_PARTITION_SIZE
pour une taille de partition fixePRODUCT_USE_DYNAMIC_PARTITIONS
etBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
pour partition dynamique taille [size]- Type de système de fichiers
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
utilisé pour Image ODM PRODUCT_ODM_PROPERTIES
à/odm/build.prop
pour utiliser dans un$(call inherit-product path/to/device.mk)
, comme dansPRODUCT_ODM_PROPERTIES += product.abc=ok
Installer un module dans une partition ODM
Utilisez ces options de compilation pour installer un module sur une partition odm
:
device_specific: true
enAndroid.bp
LOCAL_ODM_MODULE := true
enAndroid.mk
Activer le démarrage validé
Pour empêcher les logiciels malveillants de manipuler les partitions odm
,
activer le démarrage validé Android
(AVB) pour ces partitions (tout comme vous le faites pour vendor
et
system
partitions).
Pour activer AVB, incluez l'indicateur de compilation
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
Pour savoir comment configurer
AVB sur les partitions dynamiques, voir
Configuration AVB
modifications.
Traiter /odm comme une autre partition /vendor
Pour garantir que le système gère la partition odm
en tant que
la partition vendor
, remplacez toutes les vendor
codées en dur.
avec un ensemble de partitions orientées matériel (actuellement
odm
et vendor
). vendor
à retenir
emplacements de référence sur la plate-forme incluent
dynamique
éditeur de liens,
colis
manager et shell/libc
.