Esta seção descreve as matrizes de compatibilidade da estrutura e do dispositivo e o esquema da matriz de compatibilidade . Para regras de correspondência, consulte Regras de correspondência .
Matriz de compatibilidade de estrutura (FCM)
A matriz de compatibilidade da estrutura (FCM) descreve os requisitos da estrutura no dispositivo em que ela é executada. A matriz de compatibilidade da estrutura consiste na matriz de compatibilidade do sistema, na matriz de compatibilidade do produto e na matriz de compatibilidade system_ext . Os requisitos do FCM devem ser atendidos pelo manifesto do dispositivo (requisitos impostos em tempo de compilação, tempo de execução e no VTS).
O system_ext FCM e o produto FCM são complementos do FCM específico do dispositivo (instalado na partição do sistema).
- O FCM do dispositivo deve refletir os requisitos dos módulos na partição do sistema .
- O FCM system_ext deve refletir os requisitos por módulos na partição system_ext.
- O FCM do produto deve refletir os requisitos por módulos na partição do produto .
Todos os FCMs devem estar alinhados com as modificações de um OEM na estrutura nas partições system, product e system_ext. Por exemplo, se um aplicativo instalado na partição do produto usa uma extensão de fornecedor de uma interface HAL, o requisito da interface HAL deve ser declarado no FCM do produto.
Exemplo de arquivo de matriz de compatibilidade do 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>
Para obter mais detalhes, consulte Ciclo de vida do FCM .
Matriz de compatibilidade do produto
O FCM do produto é um arquivo de matriz de compatibilidade da estrutura na partição do produto. O objeto VINTF une o produto FCM com FCMs nas partições system e system_ext em tempo de execução.
Exemplo de arquivo FCM do produto:
<?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>
Matriz de compatibilidade System_ext
O FCM system_ext é um arquivo de matriz de compatibilidade de estrutura na partição system_ext. O objeto VINTF une o FCM system_ext com FCMs nas partições do sistema e do produto em tempo de execução. Consulte a matriz de compatibilidade do produto para obter um exemplo de arquivo system_ext FCM.
Matriz de compatibilidade de dispositivos (DCM)
A matriz de compatibilidade do dispositivo descreve um conjunto de requisitos que o dispositivo espera da estrutura (requisitos impostos na inicialização e no momento da OTA).
Exemplo de arquivo 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>
Esquema de matriz de compatibilidade
Esta seção descreve o significado dessas tags XML. Algumas tags "obrigatórias" podem estar ausentes do arquivo de origem na árvore de origem do Android e escritas por assemble_vintf
no momento da compilação. As tags "obrigatórias" devem estar presentes nos arquivos correspondentes no dispositivo.
-
?xml
- Opcional. Ele fornece apenas informações ao analisador XML.
-
compatibility-matrix.version
- Requeridos. Meta-versão desta matriz de compatibilidade. Descreve os elementos esperados na matriz de compatibilidade. Não relacionado à versão XML.
-
compatibility-matrix.type
- Requeridos. Tipo desta matriz de compatibilidade:
-
"device"
: Matriz de compatibilidade de dispositivos. -
"framework"
: Matriz de compatibilidade do framework.
-
-
manifest.level
- Necessário para a matriz de compatibilidade do framework. No Android 12 e superior, permitido em arquivos de matriz de compatibilidade de estrutura nas partições product e system_ext. Especifica a Versão da Matriz de Compatibilidade do Framework (versão FCM) deste arquivo. Não declare isso na matriz de compatibilidade de estrutura específica do dispositivo (ou seja,
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). -
compatibility-matrix.hal
- Opcional e pode repetir. Lista um único HAL (HIDL ou nativo) que é exigido pelo proprietário da matriz de compatibilidade (estrutura ou dispositivo) para estar presente. As entradas HAL são diferenciadas por um elemento
<name>
; pode haver várias entradas HAL com o mesmo nome (implica a condição "e"). -
compatibility-matrix.hal.format
- Opcional. O valor pode ser um dos seguintes:
-
"hidl"
: HIDL HALs. Este é o padrão. -
"aidl"
: AIDL HALs . Válido apenas na meta-versão 2.0 da matriz de compatibilidade. -
"native"
: HALs nativos.
-
-
compatibility-matrix.hal.optional
- O atributo é opcional e o padrão é false. Informa se esta HAL é opcional para o proprietário da matriz de compatibilidade (framework ou dispositivo). Se uma entrada
<hal>
estiver marcada como opcional, significa que o proprietário pode trabalhar com esta HAL, se presente, mas não exige que ela esteja presente. -
compatibility-matrix.hal.name
- Requeridos. Nome completo do pacote deste HAL. Exemplos:
-
android.hardware.camera
(HIDL ou AIDL HAL) -
GLES
(HAL nativo, requer apenas o nome)
-
-
compatibility-matrix.hal.version
- Uma lista de intervalos de versão (consulte correspondências HAL ) que define quais versões o proprietário da matriz de compatibilidade (framework ou dispositivo) espera.
Para HIDL e HALs nativos, necessário, pode ser repetido sem duplicatas. O formato é um dos seguintes:-
MAJOR . MINOR_MIN - MINOR_MAX
-
MAJOR . MINOR
(equivalente aMAJOR . MINOR - MINOR
)
Para AIDL HALs, não deve estar presente em dispositivos com Android 11 e inferior. Opcional em dispositivos que executam versões posteriores. Se especificado, o formato é um dos seguintes:-
VERSION_MIN - VERSION_MAX
-
VERSION
(equivalente aVERSION - VERSION
)
1
. -
-
compatibility-matrix.hal.interface
- Opcional, pode repetir. Uma lista de interfaces necessárias deste HAL.
-
compatibility-matrix.hal.interface.name
- Requeridos. Nome da interface.
-
compatibility-matrix.hal.interface.instance
- Opcional, pode repetir. Uma lista de instâncias necessárias desta interface.
-
compatibility-matrix.hal.interface.regex-instance
- Opcional, pode repetir. Uma lista de padrões de nome de instância necessários nesta interface. Use o formato de Expressão Regular Estendida .
-
compatibility-matrix.kernel
- Opcional, pode repetir. Especifique uma lista de configurações do kernel que a estrutura requer em cada versão do kernel.
Vários<kernel>
com a mesma<version>
podem existir para implicar um relacionamento "e". Cada<kernel>
é um "fragmento" dos requisitos que são habilitados somente quando<conditions>
são atendidas. -
compatibility-matrix.kernel.version
- Requeridos. Versão do kernel. O formato é
VERSION . MAJOR_REVISION . MINOR_REVISION
. A versão e a revisão principal devem corresponder exatamente. A revisão secundária define a versão LTS mínima do kernel que a estrutura espera. -
compatibility-matrix.kernel.condition
- Opcional. Não deve existir para o primeiro
<kernel>
de cada versão. Especifica uma lista de condições. Somente quando as condições são atendidas, os requisitos declarados neste fragmento<kernel>
são habilitados. -
compatibility-matrix.kernel.config
- Opcional, pode repetir. Lista os itens
CONFIG
que devem ser correspondidos para esta versão do kernel. Cada itemCONFIG
é um par chave-valor; os itens de configuração são diferenciados por chave. -
compatibility-matrix.kernel.config.key
- Requeridos. Nome da chave do item
CONFIG
. Começa comCONFIG_
. -
compatibility-matrix.kernel.config.value
- Requeridos. Valor do item
CONFIG
. O formato depende do tipo:-
string
. As citações são omitidas. -
int
. Valores decimais e hexadecimais (devem começar com0x
ou0X)
são aceitos. Interpretado como um inteiro de 64 bits; estouros resultam em truncamento. (O analisador aceita valores de -2 64 + 1 a 2 64 - 1, o 65º bit é truncado; para obter detalhes, consulte a página man strtoull .) -
range
. O formato é[int]-[int]
, por exemplo,10-20
. Valores hexadecimais são aceitos e devem começar com0x
ou0X
. Dois limites devem ser um inteiro de 64 bits sem sinal. -
tristate
. Os valores válidos sãoy
,m
n
.
-
-
compatibility-matrix.kernel.config.value.type
- Requeridos. Tipo do valor do item
CONFIG
, um dos seguintes:-
string
-
int
-
range
-
tristate
-
-
compatibility-matrix.sepolicy
- Requeridos. Contém todas as entradas relacionadas à sepolicy. Usado apenas pela matriz de compatibilidade do framework.
-
compatibility-matrix.sepolicy.sepolicy-version
- Obrigatório, pode repetir. Descreve o requisito na versão de sepolicy. Corresponde a
manifest.sepolicy.version
. Cada instância de um elemento define um intervalo de versões de sepolicy. -
compatibility-matrix.sepolicy.kernel-sepolicy-version
- Requeridos. Declara a versão
policydb
com a qual a estrutura funciona. -
compatibility-matrix.avb.vbmeta-version
- Opcional; usado apenas pela matriz de compatibilidade do framework. Declara a versão do AVB usada para assinar
system.img
. Obsoleto no Android 10. -
compatibility-matrix.vendor-ndk
- Opcional; usado apenas pela matriz de compatibilidade do dispositivo. Declara o requisito do instantâneo do fornecedor VNDK. Se estiver ausente, nenhum requisito de VNDK será feito na imagem do sistema.
-
compatibility-matrix.vendor-ndk.version
- Requeridos. Um número inteiro positivo que declara uma versão do VNDK exigida pela imagem do fornecedor.
-
compatibility-matrix.vendor-ndk.library
- Opcional, pode repetir. Declara um conjunto de bibliotecas VNDK exigidas pela imagem do fornecedor. Mesma semântica que
manifest.vendor-ndk.library
. -
compatibility-matrix.system-sdk.version
- Opcional, pode repetir; usado apenas pela matriz de compatibilidade do dispositivo. Declara o requisito por aplicativos do fornecedor nas versões do System SDK. Se estiver ausente, nenhum requisito do SDK do sistema será feito na imagem do sistema.