Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Matrici di compatibilità

Questa sezione descrive le matrici di compatibilità del framework e dei dispositivi e lo schema delle matrici di compatibilità . Per le regole delle partite, vedi Regole delle partite.

Matrice di compatibilità dei framework (FCM)

La matrice di compatibilità del framework descrive i requisiti del framework sul dispositivo su cui è in esecuzione. Il file matrix è associato all'immagine del framework Android (su system.img ). Si prevede che i requisiti di FCM saranno soddisfatti dal manifest del dispositivo (requisiti applicati al momento del lancio e OTA).

Esempio di file FCM:

<?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>
    </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 ulteriori dettagli, consultare Ciclo di vita di FCM .

Matrice di compatibilità del prodotto

Il prodotto FCM è un file matrice di compatibilità del framework nella partizione del prodotto. L'oggetto VINTF unisce il prodotto FCM con FCM nella partizione di sistema in fase di esecuzione.

Il prodotto FCM è un complemento del FCM specifico del dispositivo (installato nella partizione di sistema). Il dispositivo FCM dovrebbe riflettere i requisiti dei moduli nella partizione di sistema, mentre il prodotto FCM dovrebbe riflettere i requisiti dei moduli nella partizione del prodotto. Entrambi dovrebbero allinearsi alle modifiche di un OEM al framework in entrambe le partizioni del sistema e del prodotto.

Ad esempio, se un'app installata nella partizione del prodotto utilizza un'estensione fornitore di un'interfaccia HAL, i requisiti dell'interfaccia HAL devono essere dichiarati nel prodotto FCM.

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à dei dispositivi (DCM)

La matrice di compatibilità dei dispositivi descrive una serie di requisiti che il dispositivo si aspetta dal framework (requisiti applicati al momento del lancio e OTA).

Esempio di file 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>

Schema a matrice di compatibilità

Questa sezione descrive il significato di questi tag XML. Alcuni tag "obbligatori" possono mancare nel file sorgente nell'albero dei sorgenti Android e scritti da assemble_vintf al momento della creazione. I tag "richiesti" devono essere presenti nei file corrispondenti sul dispositivo.

?xml
Opzionale. Fornisce solo informazioni al parser XML.
compatibility-matrix.version
Necessario. Meta-versione di questa matrice di compatibilità. Descrive gli elementi previsti nella matrice di compatibilità. Non correlato alla versione XML.
compatibility-matrix.type
Necessario. Tipo di questa matrice di compatibilità:
  • "device" : matrice di compatibilità del dispositivo.
  • "framework" : matrice di compatibilità del framework.
manifest.level
Richiesto per la matrice di compatibilità del framework. Specifica la versione della matrice di compatibilità del framework (versione FCM) di questo file. Non deve essere dichiarato nella matrice di compatibilità del framework specifica del dispositivo (ad esempio DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE ).
compatibility-matrix.hal
Opzionale e può ripetere. Elenca un singolo HAL (HIDL o nativo) richiesto dal proprietario della matrice di compatibilità (framework o dispositivo) per essere presente. Le voci HAL si distinguono per un elemento <name> ; possono esserci più voci HAL con lo stesso nome (implica "e" condizione).
compatibility-matrix.hal.format
Opzionale. Il valore può essere uno di:
  • "hidl" : HIDL HALs. Questo è il valore predefinito.
  • "native" : HAL nativi.
compatibility-matrix.hal.optional
L'attributo è facoltativo e il valore predefinito è false. Indica se questo HAL è facoltativo per il proprietario della matrice di compatibilità (framework o dispositivo). Se una voce <hal> è contrassegnata come facoltativa, significa che il proprietario può lavorare con questo HAL, se presente, ma non richiede che sia presente.
compatibility-matrix.hal.name
Necessario. Nome del pacchetto completo di questo HAL. Esempi:
  • android.hardware.camera (HIDL HAL)
  • GLES (HAL nativo, richiede solo il nome)
compatibility-matrix.hal.version
Richiesto, può ripetere senza duplicati. Un elenco di intervalli di versioni (consultare le corrispondenze HAL ) che definiscono quali versioni si aspetta il proprietario della matrice di compatibilità (framework o dispositivo).
compatibility-matrix.hal.interface
Opzionale, può ripetere. Un elenco delle interfacce richieste di questo HAL.
compatibility-matrix.hal.interface.name
Necessario. Nome dell'interfaccia.
compatibility-matrix.hal.interface.instance
Opzionale, può ripetere. Un elenco di istanze richieste di questa interfaccia.
compatibility-matrix.hal.interface.regex-instance
Opzionale, può ripetere. Un elenco di modelli di nomi di istanza richiesti su questa interfaccia. Utilizza il formato di espressione regolare estesa .
compatibility-matrix.kernel
Opzionale, può ripetere. Specificare un elenco di configurazioni del kernel richieste dal framework su ciascuna versione del kernel.
Possono esistere più <kernel> con la stessa <version> per implicare una relazione "e". Ogni <kernel> è un "frammento" dei requisiti che sono abilitati solo quando <conditions> sono soddisfatte.
compatibility-matrix.kernel.version
Necessario. Versione del kernel. Il formato è VERSION . MAJOR_REVISION . MINOR_REVISION . La versione e la revisione principale devono corrispondere esattamente. La revisione minore definisce la versione LTS minima del kernel prevista dal framework.
compatibility-matrix.kernel.condition
Opzionale. Non deve esistere per il primo <kernel> di ciascuna versione. Specifica un elenco di condizioni. Solo quando le condizioni sono soddisfatte sono abilitati i requisiti indicati in questo frammento <kernel> .
compatibility-matrix.kernel.config
Opzionale, può ripetere. Elenca gli elementi CONFIG che devono essere abbinati per questa versione del kernel. Ogni elemento CONFIG è una coppia chiave-valore; gli elementi di configurazione si distinguono per chiave.
compatibility-matrix.kernel.config.key
Necessario. Nome chiave della voce CONFIG . Inizia con CONFIG_ .
compatibility-matrix.kernel.config.value
Necessario. Valore della voce CONFIG . Il formato dipende dal tipo:
  • string . Le citazioni sono state omesse.
  • int . I valori decimali ed esadecimali (devono iniziare con 0x o 0X) sono accettati. Interpretato come un intero a 64 bit; gli overflow causano il troncamento. (Parser accetta valori da -2 a 64 + 1-2 64-1, 65 ° bit viene troncato; per i dettagli fare riferimento alla pagina man strtoull .)
  • range . Il formato è [int]-[int] , ad esempio 10-20 . I valori esadecimali sono accettati e devono iniziare con 0x o 0X . Due limiti devono essere un numero intero a 64 bit senza segno.
  • tristate . I valori validi sono y , m e n .
compatibility-matrix.kernel.config.value.type
Necessario. Tipo di valore della voce CONFIG , uno di:
  • string
  • int
  • range
  • tristate
compatibility-matrix.sepolicy
Necessario. Contiene tutte le voci relative a sepolicy. Utilizzato solo dalla matrice di compatibilità del framework.
compatibility-matrix.sepolicy.sepolicy-version
Richiesto, può ripetere. Descrive il requisito per la versione sepolicy. Corrisponde a manifest.sepolicy.version . Ogni istanza di un elemento definisce un intervallo di versioni sepolicy.
compatibility-matrix.sepolicy.kernel-sepolicy-version
Necessario. Dichiara la versione di policydb con cui funziona il framework.
compatibility-matrix.avb.vbmeta-version
Opzionale; utilizzato solo dalla matrice di compatibilità del framework. Dichiara la versione AVB utilizzata per firmare system.img . Obsoleto in Android 10.
compatibility-matrix.vendor-ndk
Opzionale; utilizzato solo dalla matrice di compatibilità del dispositivo. Dichiara il requisito dell'istantanea del fornitore VNDK. Se mancante, non viene richiesto alcun requisito VNDK sull'immagine di sistema.
compatibility-matrix.vendor-ndk.version
Necessario. Un numero intero positivo che dichiara una versione VNDK richiesta dall'immagine del fornitore.
compatibility-matrix.vendor-ndk.library
Opzionale, può ripetere. Dichiara un set di librerie VNDK richieste dall'immagine del fornitore. Stessa semantica di manifest.vendor-ndk.library .
compatibility-matrix.system-sdk.version
Opzionale, può ripetere; utilizzato solo dalla matrice di compatibilità del dispositivo. Dichiara il requisito delle app del fornitore nelle versioni di SDK di sistema. Se mancante, non viene richiesto alcun requisito di SDK di sistema sull'immagine di sistema.