In diesem Abschnitt werden die Framework- und Gerätekompatibilitätsmatrizes sowie das Kompatibilitätsmatrix-Schema Für finden Sie unter Übereinstimmungen Regeln.
Framework-Kompatibilitätsmatrix (FCM)
Die Framework-Kompatibilitätsmatrix (FCM) beschreibt die Anforderungen des Framework auf dem Gerät, auf dem es ausgeführt wird. Die Framework-Kompatibilitätsmatrix besteht aus dem System, die Produktkompatibilitätsmatrix, und der system_ext-Kompatibilitätsmatrix. Die FCM-Anforderungen müssen im Gerätemanifest erfüllt werden (Anforderungen zur Build-Zeit, Laufzeit und in VTS erzwungen).
Die system_ext FCM und das Produkt FCM sind Ergänzungen des gerätespezifischen FCM (installiert in der Systempartition).
- Die FCM-Funktion des Geräts sollte die Anforderungen der Module im Systempartition
- Die FCM-Funktion „system_ext“ sollte den Anforderungen der Module in der Partition „system_ext“ entsprechen.
- Das Produkt FCM sollte die Anforderungen der Module in der Produktaufteilung:
Alle FCMs sollten sich an den Änderungen am Framework des OEMs im System, Produkt, und system_ext. Beispiel: Eine in der Produktpartition installierte Anwendung verwendet eine Anbietererweiterung. einer HAL-Schnittstelle muss die HAL-Schnittstellenanforderung im Produkt-FCM.
Beispiel für eine Systemkompatibilitätsmatrixdatei:
<?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>
Weitere Informationen zu FCM Lebenszyklus:
Produktkompatibilitätsmatrix
Das Produkt-FCM ist eine Framework-Kompatibilitätsmatrix-Datei im Produkt. -Partition an. Das VINTF-Objekt verbindet das Produkt FCM mit FCMs im System und system_ext. zur Laufzeit zu erstellen.
Beispiel für eine FCM-Produktdatei:
<?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>
System_ext-Kompatibilitätsmatrix
Die FCM-Datei system_ext ist eine Framework-Kompatibilitätsmatrix-Datei im Verzeichnis system_ext. -Partition an. Das VINTF-Objekt verbindet die FCM „system_ext“ mit den FCMs im System und im Produkt. zur Laufzeit zu erstellen. Siehe Produktkompatibilitätsmatrix für eine FCM-Beispieldatei "system_ext".
Gerätekompatibilitätsmatrix (DCM)
Die Gerätekompatibilitätsmatrix beschreibt eine Reihe von Anforderungen, die das Gerät erfüllen muss. vom Framework erwartet (Anforderungen bei der Einführung und OTA-Zeit).
Beispiel für eine DCM-Datei:
<?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>
Schema der Kompatibilitätsmatrix
In diesem Abschnitt wird die Bedeutung dieser XML-Tags beschrieben. Einige „erforderliche“ Tags
in der Quelldatei in der Android-Quellstruktur fehlen und
assemble_vintf
während der Build-Erstellung. „Erforderlich“ müssen Tags in den entsprechenden Dateien auf der
.
?xml
- Optional. Sie stellt nur Informationen für den XML-Parser bereit.
compatibility-matrix.version
- Erforderlich. Metaversion dieser Kompatibilitätsmatrix. Beschreibt die Elemente die in der Kompatibilitätsmatrix erwartet werden. Kein Bezug zur XML-Version.
compatibility-matrix.type
- Erforderlich. Typ dieser Kompatibilitätsmatrix:
<ph type="x-smartling-placeholder">
- </ph>
"device"
: Gerätekompatibilitätsmatrix."framework"
: Framework-Kompatibilitätsmatrix.
manifest.level
- Erforderlich für die Framework-Kompatibilitätsmatrix. Unter Android 12 und höher
in Framework-Kompatibilitätsmatrix-Dateien in den Partitionen „product“ und „system_ext“ zulässig.
Gibt die Version der Framework-Kompatibilitätsmatrix (FCM-Version) dieser Datei an. Nicht deklarieren
in der gerätespezifischen Framework-Kompatibilitätsmatrix (z.B.
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
) compatibility-matrix.hal
- Optional und kann wiederholt werden. Listet eine einzelne HAL (HIDL oder nativ) auf, die
vom Inhaber der Kompatibilitätsmatrix (Framework oder Gerät) verlangt,
vorhanden ist. HAL-Einträge sind durch ein
<name>
-Element gekennzeichnet. Es kann mehrere HAL-Einträge mit demselben Namen geben (impliziert die Bedingung "and"). compatibility-matrix.hal.format
- Optional. Folgende Werte sind möglich:
<ph type="x-smartling-placeholder">
- </ph>
"hidl"
: HIDL HALs. Das ist die Standardeinstellung."aidl"
: AIDL HALs Gilt nur für die Meta-Version 2.0 der Kompatibilitätsmatrix."native"
: native HALs.
compatibility-matrix.hal.optional
- Das Attribut ist optional und standardmäßig auf „false“ festgelegt. Gibt an, ob dieser HAL
optional für den Eigentümer der Kompatibilitätsmatrix (Framework oder Gerät). Wenn ein
Der Eintrag „
<hal>
“ ist als optional markiert, d. h., der Inhaber kann kann mit diesem HAL verwendet werden, falls vorhanden, er muss aber nicht vorhanden sein. compatibility-matrix.hal.name
- Erforderlich. Vollständiger Paketname dieses HAL. Beispiele:
<ph type="x-smartling-placeholder">
- </ph>
android.hardware.camera
(HIDL oder AIDL HAL)GLES
(natives HAL, nur Name erforderlich)
compatibility-matrix.hal.version
-
Eine Liste der Versionsbereiche (siehe
HAL-Übereinstimmungen)
das definiert, welche Versionen der Eigentümer der Kompatibilitätsmatrix (Framework oder
Gerät) erwartet.
Für HIDL- und native HALs (erforderlich) kann die Wiederholung ohne Duplikate möglich sein. Das Format ist eines der folgenden: <ph type="x-smartling-placeholder">- </ph>
MAJOR.MINOR_MIN-MINOR_MAX
MAJOR.MINOR
(entsprichtMAJOR.MINOR-MINOR
)
Für AIDL HALs dürfen sie nicht auf Geräten mit Android vorhanden sein 11 und niedriger. Optional auf Geräten auf denen neuere Versionen ausgeführt werden. Wenn angegeben, hat das Format eines der folgenden Formate: <ph type="x-smartling-placeholder">- </ph>
VERSION_MIN-VERSION_MAX
VERSION
(entsprichtVERSION-VERSION
)
1
verwendet. compatibility-matrix.hal.interface
- Optional, kann wiederholt werden. Eine Liste der erforderlichen Schnittstellen dieses HAL.
compatibility-matrix.hal.interface.name
- Erforderlich. Name der Schnittstelle.
compatibility-matrix.hal.interface.instance
- Optional, kann wiederholt werden. Eine Liste der erforderlichen Instanzen dieser Schnittstelle.
compatibility-matrix.hal.interface.regex-instance
- Optional, kann wiederholt werden. Eine Liste der erforderlichen Muster für Instanznamen auf diesem . Verwenden Sie Erweitert Regulärer Ausdruck.
compatibility-matrix.kernel
- Optional, kann wiederholt werden. Geben Sie eine Liste der Kernel-Konfigurationen an, die das Framework
die für jede Kernel-Version erforderlich sind.
Mehrere<kernel>
mit derselben<version>
können existieren, um „und“ zu implizieren, Beziehung. Jede<kernel>
ist ein „Fragment“ der Anforderungen, die nur aktiviert sind, wenn<conditions>
erfüllt. compatibility-matrix.kernel.version
- Erforderlich. Kernel-Version. Format lautet
VERSION.MAJOR_REVISION.MINOR_REVISION
Version und Hauptversion müssen genau übereinstimmen. Durch die Nebenversion wird definiert, mindestens die LTS-Version des vom Framework erwarteten Kernels. compatibility-matrix.kernel.condition
- Optional. Darf jeweils zum ersten
<kernel>
nicht vorhanden sein Version. Gibt eine Liste von Bedingungen an. Wenn die Bedingungen erfüllt sind, die in diesem<kernel>
-Fragment angegebenen Anforderungen erfüllt sind. compatibility-matrix.kernel.config
- Optional, kann wiederholt werden. Listet
CONFIG
Elemente auf, die sein müssen die dieser Kernel-Version zugeordnet ist. JedesCONFIG
-Element ist ein Schlüssel/Wert-Paar Paar; Konfigurationselemente werden durch Schlüssel unterschieden. compatibility-matrix.kernel.config.key
- Erforderlich. Schlüsselname des
CONFIG
-Elements. Beginnt mitCONFIG_
compatibility-matrix.kernel.config.value
- Erforderlich. Wert des
CONFIG
-Elements. Das Format hängt vom Typ ab: <ph type="x-smartling-placeholder">- </ph>
string
Anführungszeichen werden weggelassen.int
Dezimal- und hexadezimal (muss mit0x
beginnen) oder0X)
-Werte akzeptiert. Wird als 64-Bit-Ganzzahl interpretiert. Überlauf wird abgeschnitten. (Parser akzeptiert Werte aus -264 + 1 bis 264 – 1 wird das 65. Bit abgeschnitten; finden Sie in der Strtoull Manpage.range
Das Format ist[int]-[int]
, z.B.10-20
Hexadezimalwerte sind zulässig und müssen mit0x
oder0X
. Zwei Grenzen müssen 64-Bit-Werte ohne Vorzeichen sein Integertristate
Gültige Werte sindy
,m
undn
.
compatibility-matrix.kernel.config.value.type
- Erforderlich. Typ des Werts des
CONFIG
-Elements, einer der folgenden: <ph type="x-smartling-placeholder">- </ph>
string
int
range
tristate
compatibility-matrix.sepolicy
- Erforderlich. Enthält alle sepolicy-bezogenen Einträge. Wird nur vom Framework-Kompatibilitätsmatrix.
compatibility-matrix.sepolicy.sepolicy-version
- Erforderlich, kann wiederholt werden. Beschreibt die Anforderung an die sepolicy-Version.
Entspricht
manifest.sepolicy.version
. Jede Instanz eines -Element definiert eine Reihe von sepolicy-Versionen. compatibility-matrix.sepolicy.kernel-sepolicy-version
- Erforderlich. Deklariert die
policydb
-Version, die das Framework funktioniert compatibility-matrix.avb.vbmeta-version
- Optional: die nur von der Framework-Kompatibilitätsmatrix verwendet werden. Deklariert die
AVB
Version, mit der
system.img
signiert wurde. In Android eingestellt 10. compatibility-matrix.vendor-ndk
- Optional: die nur von der Gerätekompatibilitätsmatrix verwendet werden. Deklariert die Anforderungen des VNDK-Anbieter-Snapshots. Fehlt diese Angabe, wird keine VNDK-Anforderung erfüllt auf das System-Image.
compatibility-matrix.vendor-ndk.version
- Erforderlich. Eine positive Ganzzahl, die eine VNDK-Version angibt, die für das Bild des Anbieters.
compatibility-matrix.vendor-ndk.library
- Optional, kann wiederholt werden. Deklariert eine Reihe von VNDK-Bibliotheken, die für das
Bild des Anbieters. Dieselbe Semantik wie bei
manifest.vendor-ndk.library
. compatibility-matrix.system-sdk.version
- Optional, kann wiederholt werden; die nur von der Gerätekompatibilitätsmatrix verwendet werden. Erklärungen Anforderungen von Anbieter-Apps für System SDK-Versionen erfüllt werden. Fehlt das System, ist kein System-SDK vorhanden. Anforderungen an das System-Image.