Esta seção descreve o framework e as matrizes de compatibilidade de dispositivo e o esquema de matriz de compatibilidade. Para regras de correspondência, consulte Correspondência Regras.
Matriz de compatibilidade de framework (FCM, na sigla em inglês)
A matriz de compatibilidade de framework (FCM, na sigla em inglês) descreve os requisitos da no dispositivo em que é executado. A matriz de compatibilidade do framework consiste no sistema a matriz de compatibilidade, a matriz de compatibilidade do produto e a matriz de compatibilidade do system_ext. Os requisitos do FCM precisam ser atendidos pelo manifesto do dispositivo (requisitos aplicada no tempo de build, no ambiente de execução e no VTS).
O system_ext FCM e o FCM do produto são complementos do FCM específicos do dispositivo (instalados na partição do sistema).
- O FCM do dispositivo precisa refletir os requisitos dos módulos no partição do sistema.
- O FCM system_ext deve refletir os requisitos por módulos na partição system_ext.
- O FCM do produto precisa refletir os requisitos por módulos no partição do produto.
Todos os FCMs devem estar alinhados com as modificações de um OEM na estrutura de trabalho do sistema, do produto e system_ext. Por exemplo, se um app instalado na partição do produto usar uma extensão de fornecedor de uma interface HAL, o requisito de interface HAL deve ser declarado no do produto FCM.
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 mais detalhes, consulte FCM Lifecycle.
Matriz de compatibilidade do produto
O FCM do produto é um arquivo de matriz de compatibilidade de framework no produto partição. O objeto VINTF une o FCM do produto a FCMs no system e system_ext. partições diferentes no ambiente de execução.
Exemplo de arquivo do 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 system_ext FCM é um arquivo de matriz de compatibilidade de framework no system_ext partição. O objeto VINTF une o FCM system_ext a FCMs no sistema e no produto partições diferentes no ambiente de execução. Consulte a matriz de compatibilidade do produto para um exemplo de arquivo system_ext do FCM.
Matriz de compatibilidade do dispositivo (DCM)
A matriz de compatibilidade do dispositivo descreve um conjunto de requisitos que o dispositivo espera da estrutura (requisitos aplicados no lançamento e no momento da OTA).
Exemplo de arquivo do 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. Alguma informação "obrigatória" tags
pode estar ausente no arquivo de origem na árvore de origem do Android e gravados por
assemble_vintf
no momento da criação. "Obrigatório" tags devem estar presentes nos arquivos correspondentes no
dispositivo.
?xml
- Opcional. Ele só fornece informações para o analisador XML.
compatibility-matrix.version
- Obrigatório. Metaversão dessa matriz de compatibilidade. Descreve os elementos esperado na matriz de compatibilidade. Não tem relação com a versão do XML.
compatibility-matrix.type
- Obrigatório. Tipo dessa matriz de compatibilidade:
"device"
: matriz de compatibilidade de dispositivos."framework"
: matriz de compatibilidade do framework.
manifest.level
- Obrigatório para a matriz de compatibilidade do framework. No Android 12 e versões mais recentes,
permitido nos arquivos de matriz de compatibilidade do framework nas partições product e system_ext.
Especifica a Versão da matriz de compatibilidade de framework (Versão do FCM) deste arquivo. Não declarar
na matriz de compatibilidade do framework específico do dispositivo (ou seja,
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). compatibility-matrix.hal
- Opcional e pode ser repetido. Lista um único HAL (HIDL ou nativo) que é
exigidos pelo proprietário da matriz de compatibilidade (framework ou dispositivo) seja
presente. As entradas de 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"
: HALs HIDL. Esse é o padrão."aidl"
: HALs da AIDL. Válido somente na metaversão 2.0 da matriz de compatibilidade."native"
: HALs nativas.
compatibility-matrix.hal.optional
- O atributo é opcional, e o padrão é "false". Indica se a HAL é
opcional para o proprietário da matriz de compatibilidade (framework ou dispositivo). Se um
A entrada
<hal>
está marcada como opcional. Isso significa que o proprietário pode funciona com essa HAL, se houver, mas não precisa que ela esteja presente. compatibility-matrix.hal.name
- Obrigatório. Nome completo do pacote dessa HAL. Exemplos:
android.hardware.camera
(HAL de HIDL ou AIDL)GLES
(HAL nativa, requer apenas o nome)
compatibility-matrix.hal.version
-
Uma lista de intervalos de versões (consulte
correspondências de HAL)
que defina quais versões o proprietário da matriz de compatibilidade (framework ou
dispositivo) espera.
Para HIDL e HALs nativas, necessárias, podem se repetir sem cópias. O formato é um dos seguintes:MAJOR.MINOR_MIN-MINOR_MAX
MAJOR.MINOR
(equivalente aMAJOR.MINOR-MINOR
).
Para HALs da AIDL, não podem estar presentes em dispositivos com Android 11 e anteriores. Opcional em dispositivos que executam versões posteriores. Se especificado, o formato será um dos seguintes:VERSION_MIN-VERSION_MAX
VERSION
(equivalente aVERSION-VERSION
).
1
. compatibility-matrix.hal.interface
- Opcional, pode repetir. Uma lista das interfaces necessárias para essa HAL.
compatibility-matrix.hal.interface.name
- Obrigatório. Nome da interface.
compatibility-matrix.hal.interface.instance
- Opcional, pode repetir. Uma lista de instâncias obrigatórias dessa interface.
compatibility-matrix.hal.interface.regex-instance
- Opcional, pode repetir. Uma lista de padrões de nome de instâncias obrigatórios neste interface gráfica do usuário. Usar Estendido formato de expressão regular.
compatibility-matrix.kernel
- Opcional, pode repetir. especificar uma lista de configurações do kernel que o framework
necessário em cada versão do kernel.
Várias<kernel>
com o mesmo<version>
podem existem para implicar "e" relação. Cada<kernel>
é um "fragmento". dos requisitos que são ativados apenas quando<conditions>
são atendidas. compatibility-matrix.kernel.version
- Obrigatório. Versão do kernel. O formato é
VERSION.MAJOR_REVISION.MINOR_REVISION
: A versão e a revisão principal devem ser exatamente iguais. Uma pequena revisão define a versão mínima de LTS do kernel esperado pelo framework. compatibility-matrix.kernel.condition
- Opcional. Não pode existir para o primeiro
<kernel>
de cada para a versão anterior. Especifica uma lista de condições. Quando as condições são atendidas, os requisitos estabelecidos nesse fragmento de<kernel>
estão ativados. compatibility-matrix.kernel.config
- Opcional, pode repetir. Lista
CONFIG
itens que precisam ser correspondentes para esta versão do kernel. Cada itemCONFIG
é uma chave-valor. par; os itens de configuração são diferenciados pela chave. compatibility-matrix.kernel.config.key
- Obrigatório. Nome da chave do item
CONFIG
. Começa comCONFIG_
: compatibility-matrix.kernel.config.value
- Obrigatório. Valor do item
CONFIG
. O formato depende do tipo:string
: As aspas são omitidas.int
: decimal e hexadecimal (precisa começar com0x
). ou0X)
serão aceitos. Interpretado como um número inteiro de 64 bits. os estouros resultam em truncamento. O analisador aceita valores de -264 + 1 para 264 - 1, o 65o bit é truncado. para mais detalhes, consulte Strtoull página do manual.range
: O formato é[int]-[int]
, por exemplo:10-20
Os valores hexadecimais são aceitos e devem começar com0x
ou0X
. Dois limites precisam ser um arquivo de 64 bits não assinado inteiro.tristate
: Os valores válidos sãoy
,m
en
.
compatibility-matrix.kernel.config.value.type
- Obrigatório. Tipo de valor do item
CONFIG
, uma das seguintes opções:string
int
range
tristate
compatibility-matrix.sepolicy
- Obrigatório. Contém todas as entradas relacionadas a sepolicy. Usado apenas pelo matriz de compatibilidade de framework.
compatibility-matrix.sepolicy.sepolicy-version
- Obrigatório, pode ser repetido. Descreve o requisito da versão do sepolicy.
Corresponde a
manifest.sepolicy.version
. Cada instância de um define um intervalo de versões sepolicy. compatibility-matrix.sepolicy.kernel-sepolicy-version
- Obrigatório. Declara a versão
policydb
em que o framework funciona. a criar. compatibility-matrix.avb.vbmeta-version
- Opcional usada apenas pela matriz de compatibilidade do framework. Declara o
AVB
versão usada para assinar
system.img
. Descontinuado no Android 10 – compatibility-matrix.vendor-ndk
- Opcional usada apenas pela matriz de compatibilidade do dispositivo. Declara o requisito do snapshot do fornecedor de VNDK. Se ausente, nenhum requisito de VNDK é feito. na imagem do sistema.
compatibility-matrix.vendor-ndk.version
- Obrigatório. Um número inteiro positivo que declara uma versão do VNDK exigida pelo imagem do fornecedor.
compatibility-matrix.vendor-ndk.library
- Opcional, pode repetir. Declara um conjunto de bibliotecas VNDK exigidas pelo
imagem do fornecedor. Mesma semântica de
manifest.vendor-ndk.library
. compatibility-matrix.system-sdk.version
- Opcional, pode repetir usada apenas pela matriz de compatibilidade do dispositivo. Declara os requisitos dos apps dos fornecedores nas versões do SDK do sistema. Se ausente, não há SDK do sistema é feito na imagem do sistema.