Cette section décrit le framework et les matrices de compatibilité le schéma de la matrice de compatibilité. Pour des règles de correspondance, reportez-vous à la section Mise en correspondance Règles.
Matrice de compatibilité des frameworks (FCM)
La matrice de compatibilité du framework (FCM) décrit les exigences du sur l'appareil sur lequel il s'exécute. La matrice de compatibilité du framework est constituée du système la matrice de compatibilité des produits, et la matrice de compatibilité system_ext. Les exigences de FCM doivent être satisfaites par le fichier manifeste de l'appareil (exigences lors de la compilation, de l'exécution et dans VTS).
FCM system_ext et FCM du produit sont des compléments de FCM propre à l'appareil (installé dans la partition système).
- Le FCM de l'appareil doit refléter les exigences des modules du partition système.
- Le FCM system_ext doit refléter les exigences des modules de la partition system_ext.
- FCM du produit doit refléter les exigences des modules du partition des produits.
Tous les FCM doivent s'aligner sur les modifications apportées par un OEM au framework et system_ext. Par exemple, si une application installée dans la partition de produits utilise une extension de fournisseur d'une interface HAL, l'exigence d'interface HAL doit être déclarée dans le produit FCM.
Exemple de fichier de matrice de compatibilité système:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="framework" level="3"> <hal> <name>android.hardware.camera</name> <version>1.0</version> <version>3.1-4</version> <interface> <name>ICameraProvider</name> <instance>default</instance> <regex-instance>[a-z_]+/[0-9]+</regex-instance> </interface> </hal> <hal> <name>android.hardware.nfc</name> <version>1.0</version> <interface> <name>INfc</name> <instance>default</instance> </interface> </hal> <hal optional="true"> <name>android.hardware.graphics.composer</name> <version>2.1</version> <interface> <name>IComposer</name> <instance>default</instance> </interface> </hal> <hal format="aidl" optional="true"> <name>android.hardware.light</name> <version>1-2</version> <interface> <name>ILights</name> <instance>default</instance> </interface> </hal> <hal format="native"> <name>GL</name> <version>1.1</version> <version>3.0</version> </hal> <hal format="native"> <name>EGL</name> <version>1.1</version> </hal> <kernel version="3.18.51"> <!-- common configs --> </kernel> <kernel version="3.18.51"> <!-- arm specific configs --> <condition> <config> <key>CONFIG_ARM</key> <value type="tristate">y</value> </config> <condition> <config> <key>CONFIG_A</key> <value type="string"></value> </config> <config> <key>CONFIG_B</key> <value type="tristate">y</value> </config> </kernel> <kernel version="4.1.22"> <!-- common configs --> <config> <key>CONFIG_A</key> <value type="string">foo</value> </config> <config> <key>CONFIG_B2</key> <value type="int">1024</value> </config> </kernel> <sepolicy> <kernel-sepolicy-version>30</kernel-sepolicy-version> <sepolicy-version>25.0</sepolicy-version> <sepolicy-version>26.0-3</sepolicy-version> </sepolicy> <avb> <vbmeta-version>2.1</vbmeta-version> </avb> <xmlfile format="dtd"> <name>media_profile</name> <version>1.0</version> <path>/system/etc/media_profile_V1_0.dtd</path> </xmlfile> </compatibility-matrix>
Pour en savoir plus, consultez la page FCM Lifecycle
Matrice de compatibilité des produits
FCM est un fichier de matrice de compatibilité avec le framework partition. L'objet VINTF joint le produit FCM aux FCM dans le système et le champ system_ext. des partitions au moment de l'exécution.
Exemple de fichier FCM de produit:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="framework"> <hal> <name>vendor.foo.camera</name> <version>1.0</version> <interface> <name>IBetterCamera</name> <instance>default</instance> </interface> </hal> </compatibility-matrix>
Matrice de compatibilité System_ext
Le FCM system_ext est un fichier de matrice de compatibilité de framework situé dans partition. L'objet VINTF joint le FCM system_ext aux FCM dans le système et le produit. des partitions au moment de l'exécution. Consultez la matrice de compatibilité des produits. pour obtenir un exemple de fichier FCM system_ext.
Matrice de compatibilité des appareils (DCM)
La matrice de compatibilité des appareils décrit un ensemble d'exigences attentes du framework (exigences appliquées au lancement et au moment de la mise à jour OTA).
Exemple de fichier DCM:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="device"> <hal> <name>android.hidl.manager</name> <version>1.0</version> <interface> <name>IServiceManager</name> <instance>default</instance> </interface> </hal> <hal> <name>android.hidl.memory</name> <version>1.0</version> <interface> <name>IMemory</name> <instance>ashmem</instance> </interface> </hal> <hal> <name>android.hidl.allocator</name> <version>1.0</version> <interface> <name>IAllocator</name> <instance>ashmem</instance> </interface> </hal> <hal> <name>android.framework.sensor</name> <version>1.0</version> <interface> <name>ISensorManager</name> <instance>default</instance> </interface> </hal> <vendor-ndk> <version>27</version> </vendor-ndk> <system-sdk> <version>27</version> </system-sdk> </compatibility-matrix>
Schéma de la matrice de compatibilité
Cette section décrit la signification de ces balises XML. Certaines valeurs "obligatoires" tags
peut être absente du fichier source de l'arborescence source Android et écrite par
assemble_vintf
au moment de la compilation. "Obligatoire" les tags doivent être présents dans les fichiers correspondants sur le
appareil.
?xml
- Facultatif. Elle ne fournit des informations qu'à l'analyseur XML.
compatibility-matrix.version
- Obligatoire. Métaversion de cette matrice de compatibilité Décrit les éléments attendue dans la matrice de compatibilité. Sans rapport avec la version XML.
compatibility-matrix.type
- Obligatoire. Type de cette matrice de compatibilité:
<ph type="x-smartling-placeholder">
- </ph>
"device"
: matrice de compatibilité des appareils"framework"
: matrice de compatibilité des frameworks
manifest.level
- Requis pour la matrice de compatibilité du framework. Sur Android 12 et versions ultérieures,
autorisée dans les fichiers de matrice de compatibilité du framework dans les partitions "product" et "system_ext".
Spécifie la version de la matrice de compatibilité des frameworks (version FCM) de ce fichier. Ne pas déclarer
dans la matrice de compatibilité du framework spécifique à l'appareil (par exemple,
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
, par exemple). compatibility-matrix.hal
- Facultatif et peut être répété. Liste un seul HAL (HIDL ou natif) qui est
requise par le propriétaire de la matrice de compatibilité (framework ou appareil)
à l'heure actuelle. Les entrées HAL se distinguent par un élément
<name>
. plusieurs entrées HAL peuvent avoir le même nom (ce qui implique une condition "et"). compatibility-matrix.hal.format
- Facultatif. La valeur peut être l'une des suivantes:
<ph type="x-smartling-placeholder">
- </ph>
"hidl"
: HIDL HAL. Il s'agit de l'option par défaut."aidl"
: HAL AIDL. Uniquement valide sur la méta-version 2.0 de la matrice de compatibilité."native"
: HAL natives.
compatibility-matrix.hal.optional
- L'attribut est facultatif et est défini par défaut sur "false". Indique si cette HAL est
facultatif pour le propriétaire de la matrice de compatibilité (framework ou appareil). Si un
L'entrée
<hal>
est marquée comme facultative, ce qui signifie que le propriétaire peut fonctionne avec ce HAL, s'il est présent, mais ne nécessite pas qu'il soit présent. compatibility-matrix.hal.name
- Obligatoire. Nom de package complet de ce HAL. Exemples:
<ph type="x-smartling-placeholder">
- </ph>
android.hardware.camera
(HIDL ou AIDL HAL)GLES
(HAL natif, nom uniquement requis)
compatibility-matrix.hal.version
-
La liste des plages de versions (voir
correspondances HAL)
qui définit les versions du propriétaire de la matrice de compatibilité (framework ou
appareil) s'attend.
Pour les HAL natives et HIDL, obligatoire, peut être répété sans doublons. Le format doit être l'un des suivants: <ph type="x-smartling-placeholder">- </ph>
MAJOR.MINOR_MIN-MINOR_MAX
MAJOR.MINOR
(équivalent àMAJOR.MINOR-MINOR
).
Pour les HAL AIDL, ne doit pas être présent sur les appareils exécutant Android 11 et versions antérieures. Facultatif sur les appareils les versions ultérieures. S'il est spécifié, le format est l'un des suivants: <ph type="x-smartling-placeholder">- </ph>
VERSION_MIN-VERSION_MAX
VERSION
(équivalent àVERSION-VERSION
).
1
. compatibility-matrix.hal.interface
- Facultatif, peut être répété. Liste des interfaces requises pour ce HAL.
compatibility-matrix.hal.interface.name
- Obligatoire. Nom de l'interface.
compatibility-matrix.hal.interface.instance
- Facultatif, peut être répété. Liste des instances requises de cette interface.
compatibility-matrix.hal.interface.regex-instance
- Facultatif, peut être répété. Une liste des formats de nom d'instance requis pour de commande. Utilisez Étendu Expression régulière.
compatibility-matrix.kernel
- Facultatif, peut être répété. Spécifiez la liste des configurations de noyau que le framework
sur chaque version de noyau.
Plusieurs<kernel>
avec le même<version>
peuvent existent pour impliquer « et » relation. Chaque<kernel>
est un "fragment" des exigences qui ne sont activées que lorsque les<conditions>
sont sont satisfaites. compatibility-matrix.kernel.version
- Obligatoire. Version du noyau. La valeur Format est
VERSION.MAJOR_REVISION.MINOR_REVISION
La version et la révision majeure doivent correspondre exactement. Le paramètre "Révision mineure" définit version LTS minimale du noyau attendue par le framework. compatibility-matrix.kernel.condition
- Facultatif. Ne doit pas exister les premiers
<kernel>
de chaque version. Spécifie une liste de conditions. Lorsque les conditions sont remplies, les exigences indiquées dans ce fragment<kernel>
sont activées. compatibility-matrix.kernel.config
- Facultatif, peut être répété. Liste les éléments
CONFIG
qui doivent être correspondant à cette version de noyau. Chaque élémentCONFIG
est une clé-valeur paire ; les éléments de configuration sont distingués par clé. compatibility-matrix.kernel.config.key
- Obligatoire. Nom de clé de l'élément
CONFIG
. Commence parCONFIG_
compatibility-matrix.kernel.config.value
- Obligatoire. Valeur de l'élément
CONFIG
. Le format dépend du type: <ph type="x-smartling-placeholder">- </ph>
string
Les guillemets sont omis.int
Décimal et hexadécimal (doit commencer par0x
) ou0X)
valeurs sont acceptées. Interprété comme un entier de 64 bits. et les dépassements de capacité provoquent la troncation. (L'analyseur accepte les valeurs comprises entre -264 + 1 à 264 : 1, le 65e bit est tronqué. Pour en savoir plus, consultez Strtoull page de manuel.)range
Le format est[int]-[int]
.Ex. :10-20
Les valeurs hexadécimales sont acceptées et doivent commencer par0x
ou0X
. Les deux limites doivent être des plages de 64 bits non signées entier.tristate
Les valeurs valides sonty
,m
etn
compatibility-matrix.kernel.config.value.type
- Obligatoire. Type de la valeur de l'élément
CONFIG
, au choix: <ph type="x-smartling-placeholder">- </ph>
string
int
range
tristate
compatibility-matrix.sepolicy
- Obligatoire. Contient toutes les entrées liées à la règle sepolicy. Utilisé uniquement par de compatibilité du framework.
compatibility-matrix.sepolicy.sepolicy-version
- Obligatoire, peut être répété. Décrit les exigences liées à la version de sepolicy.
Correspond à
manifest.sepolicy.version
. Chaque instance d'une définit une plage de versions de sepolicy. compatibility-matrix.sepolicy.kernel-sepolicy-version
- Obligatoire. Déclare la version
policydb
avec laquelle le framework fonctionne. . compatibility-matrix.avb.vbmeta-version
- Facultatif : utilisée uniquement par la matrice
de compatibilité du framework. Déclare la valeur
AVB
version utilisée pour signer
system.img
. Obsolète dans Android 10. compatibility-matrix.vendor-ndk
- Facultatif : utilisé uniquement par la matrice de compatibilité des appareils. Déclare la valeur de l'instantané du fournisseur VNDK. Si ce champ n'est pas renseigné, le VNDK n'est pas exigé sur l'image système.
compatibility-matrix.vendor-ndk.version
- Obligatoire. Entier positif qui déclare la version du VNDK requise par le image du fournisseur.
compatibility-matrix.vendor-ndk.library
- Facultatif, peut être répété. Déclare un ensemble de bibliothèques VNDK requises par la classe
l'image du fournisseur. Même sémantique que
manifest.vendor-ndk.library
. compatibility-matrix.system-sdk.version
- Facultatif, peut être répété ; utilisé uniquement par la matrice de compatibilité des appareils. Déclare les exigences des applis des fournisseurs sur les versions du SDK système. Si ce champ est manquant, aucun SDK système est effectuée sur l'image système.