Questa sezione descrive le matrici di compatibilità del framework e dei dispositivi e lo schema della matrice di compatibilità. Per di corrispondenza, consulta la sezione Informazioni sulla corrispondenza Regole.
Framework compatibilità Matrix (FCM)
La matrice della compatibilità del framework (FCM) descrive i requisiti del sul dispositivo su cui viene eseguito. La matrice di compatibilità del framework è composta dal sistema la matrice di compatibilità dei prodotti, e la matrice di compatibilità system_ext. I requisiti di FCM devono essere soddisfatti dal file manifest del dispositivo (requisiti applicati in fase di build, runtime e in VTS).
FCM system_ext e FCM del prodotto sono complementari a FCM specifico per il dispositivo (installato nella partizione di sistema).
- Il file FCM del dispositivo deve riflettere i requisiti dei moduli nel System Partizione di sistema.
- Il valore FCM system_ext deve riflettere i requisiti in base ai moduli nella partizione system_ext.
- La FCM del prodotto deve riflettere i requisiti per moduli nel partizione del prodotto.
Tutti gli FCM devono essere in linea con le modifiche di un OEM al framework del sistema, del prodotto e system_ext. Ad esempio, se un'app installata nella partizione prodotto utilizza un'estensione del fornitore di un'interfaccia HAL, i requisiti dell'interfaccia devono essere dichiarati nel FCM del prodotto.
Esempio di file della matrice di compatibilità del sistema:
<?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>
Per maggiori dettagli, consulta FCM Ciclo di vita.
Matrice di compatibilità dei prodotti
Il prodotto FCM è un file della matrice di compatibilità del framework nel prodotto della partizione di testo. L'oggetto VINTF unisce il prodotto FCM con gli FCM nel sistema e system_ext in fase di runtime.
Esempio di file FCM del prodotto:
<?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 di compatibilità System_ext
FCM system_ext è un file della matrice di compatibilità del framework in system_ext della partizione di testo. L'oggetto VINTF unisce l'FCM system_ext agli FCM nel sistema e nel prodotto in fase di runtime. Consulta la matrice di compatibilità dei prodotti per un file FCM system_ext di esempio.
Matrice di compatibilità dei dispositivi (DCM)
La matrice di compatibilità dei dispositivi descrive una serie di requisiti del dispositivo si aspetta dal framework (requisiti applicati al momento del lancio e OTA).
File DCM di esempio:
<?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 della matrice di compatibilità
Questa sezione descrive il significato di questi tag XML. Alcuni elementi "obbligatori" tag
potrebbe non essere presente nel file di origine nella struttura di origine Android ed essere scritto da
assemble_vintf
in fase di creazione. "Obbligatorio" i tag devono essere presenti nei file corrispondenti
dispositivo.
?xml
- Facoltativo. Fornisce solo informazioni al parser XML.
compatibility-matrix.version
- Obbligatorio. Meta-versione di questa matrice di compatibilità. Descrive gli elementi previsto nella matrice di compatibilità. Non correlato alla versione XML.
compatibility-matrix.type
- Obbligatorio. Tipo di matrice di compatibilità:
"device"
: matrice di compatibilità dei dispositivi."framework"
: matrice di compatibilità del framework.
manifest.level
- Obbligatorio per la matrice di compatibilità del framework. In Android 12 e versioni successive,
consentito nei file della matrice di compatibilità del framework nelle partizioni product e system_ext.
Specifica la versione della matrice della compatibilità del framework (versione FCM) di questo file. Non dichiarare
nella matrice di compatibilità del framework specifica per il dispositivo (ad es.
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). compatibility-matrix.hal
- Facoltativo e può ripetersi. Elenca un singolo HAL (HIDL o nativo) che è
che il proprietario della matrice di compatibilità (framework o dispositivo)
presenti. Le voci HAL sono distinte da un elemento
<name>
; possono esserci più voci HAL con lo stesso nome (condiziona la condizione "and"). compatibility-matrix.hal.format
- Facoltativo. Il valore può essere uno dei seguenti:
"hidl"
: HIDL HAL. Questa è l'impostazione predefinita."aidl"
: AIDL HAL. Valido solo sulla meta-versione 2.0 della matrice di compatibilità."native"
: HAL nativi.
compatibility-matrix.hal.optional
- L'attributo è facoltativo e il valore predefinito è false. Indica se l'HAL è
facoltativa per il proprietario della matrice di compatibilità (framework o dispositivo). Se
<hal>
voce è contrassegnata come facoltativa, il che significa che il proprietario può funzionino con questo HAL, se presente, ma non richiede la sua presenza. compatibility-matrix.hal.name
- Obbligatorio. Nome completo del pacchetto di questo HAL. Esempi:
android.hardware.camera
(HIDL o AIDL HAL)GLES
(HAL nativo, richiede solo il nome)
compatibility-matrix.hal.version
-
Un elenco di intervalli di versioni (vedi
corrispondenze dell'HAL)
che definisce le versioni del proprietario della matrice di compatibilità (framework
dispositivo).
Per gli HAL HIDL e nativi, obbligatorio, può essere ripetuto senza duplicati. Il formato è uno dei seguenti:MAJOR.MINOR_MIN-MINOR_MAX
MAJOR.MINOR
(equivalente aMAJOR.MINOR-MINOR
)
Per gli HAL AIDL, non deve essere presente sui dispositivi con Android 11 e precedenti. Facoltativo sui dispositivi con versioni successive. Se specificato, il formato è uno dei seguenti:VERSION_MIN-VERSION_MAX
VERSION
(equivalente aVERSION-VERSION
)
1
. compatibility-matrix.hal.interface
- Facoltativo, può essere ripetuto. Un elenco delle interfacce richieste per questo HAL.
compatibility-matrix.hal.interface.name
- Obbligatorio. Nome dell'interfaccia.
compatibility-matrix.hal.interface.instance
- Facoltativo, può essere ripetuto. Un elenco delle istanze richieste di questa interfaccia.
compatibility-matrix.hal.interface.regex-instance
- Facoltativo, può essere ripetuto. Un elenco di pattern per i nomi di istanza obbligatori a riga di comando. Utilizza le funzionalità di Estesa Espressione regolare.
compatibility-matrix.kernel
- Facoltativo, può essere ripetuto. Specifica un elenco di configurazioni del kernel che il framework
per ogni versione del kernel.
Più<kernel>
con lo stesso<version>
possono esistenti in modo da sottintendere "e" relazione tra utenti. Ogni<kernel>
è un "frammento" dei requisiti che vengono attivati solo quando<conditions>
sono sono soddisfatte determinate condizioni. compatibility-matrix.kernel.version
- Obbligatorio. Versione kernel. Il formato è
VERSION.MAJOR_REVISION.MINOR_REVISION
. La versione e la revisione principale devono corrispondere esattamente. La revisione secondaria definisce versione LTS minima del kernel prevista dal framework. compatibility-matrix.kernel.condition
- Facoltativo. Non deve esistere per i primi
<kernel>
di ogni completamente gestita. Specifica un elenco di condizioni. Quando le condizioni sono soddisfatte, i requisiti indicati in questo frammento<kernel>
siano abilitati. compatibility-matrix.kernel.config
- Facoltativo, può essere ripetuto. Elenca
CONFIG
elementi che devono essere corrispondenti a questa versione del kernel. Ogni elementoCONFIG
è una coppia chiave-valore coppia; gli elementi di configurazione sono distinti per chiave. compatibility-matrix.kernel.config.key
- Obbligatorio. Nome della chiave dell'elemento
CONFIG
. Inizia conCONFIG_
. compatibility-matrix.kernel.config.value
- Obbligatorio. Valore dell'elemento
CONFIG
. Il formato dipende dal tipo:string
. Le virgolette sono omesse.int
. Decimale ed esadecimale (deve iniziare con0x
o0X)
valori. Interpretato come un numero intero a 64 bit; gli overflow comportano il troncamento. L'analisi accetta valori compresi tra -264 + 1 a 264 - 1; il 65° bit è troncato; per maggiori dettagli, consulta Strtoull pagina man.)range
. Il formato è[int]-[int]
, ad esempio10-20
. I valori esadecimali sono accettati e devono iniziare con0x
o0X
. I due limiti devono essere un modello a 64 bit non firmato numero intero.tristate
. I valori validi sonoy
,m
en
.
compatibility-matrix.kernel.config.value.type
- Obbligatorio. Tipo del valore dell'elemento
CONFIG
, uno tra:string
int
range
tristate
compatibility-matrix.sepolicy
- Obbligatorio. Contiene tutte le voci relative a sepolicy. Utilizzato solo di compatibilità del framework.
compatibility-matrix.sepolicy.sepolicy-version
- Obbligatorio, può ripetersi. Descrive il requisito per la versione sepolicy.
Corrisponde a
manifest.sepolicy.version
. Ogni istanza di un definisce un intervallo di versioni sepolicy. compatibility-matrix.sepolicy.kernel-sepolicy-version
- Obbligatorio. Dichiara la versione di
policydb
in cui funziona il framework con. compatibility-matrix.avb.vbmeta-version
- Facoltativo; utilizzata solo dalla matrice di compatibilità del framework. Dichiara il
Durata di visualizzazione media:
[versione] utilizzata per firmare
system.img
. Obsoleta in Android 10 compatibility-matrix.vendor-ndk
- Facoltativo; utilizzati solo dalla matrice di compatibilità dei dispositivi. Dichiara il requisito dello snapshot del fornitore VNDK. Se non disponibile, non viene richiesto alcun requisito VNDK. sull'immagine di sistema.
compatibility-matrix.vendor-ndk.version
- Obbligatorio. Un numero intero positivo che dichiara una versione VNDK richiesta dal dell'immagine del fornitore.
compatibility-matrix.vendor-ndk.library
- Facoltativo, può essere ripetuto. Dichiara un insieme di librerie VNDK richieste dai
dell'immagine del fornitore. Stessa semantica di
manifest.vendor-ndk.library
. compatibility-matrix.system-sdk.version
- Facoltativo, può ripetersi; utilizzati solo dalla matrice di compatibilità dei dispositivi. Dichiara il requisito delle app del fornitore nelle versioni SDK di sistema. Se mancante, nessun SDK di sistema nell'immagine di sistema.