En esta sección, se describen las matrices de compatibilidad de framework y dispositivos, y el esquema de la matriz de compatibilidad. Para reglas de coincidencia, consulta Búsqueda de coincidencias Reglas
Matriz de compatibilidad con el framework (FCM)
La matriz de compatibilidad con el marco de trabajo (FCM) describe los requisitos del de Terraform en el dispositivo en el que se ejecuta. La matriz de compatibilidad del framework consta del sistema la matriz de compatibilidad, la matriz de compatibilidad de productos, y la matriz de compatibilidad system_ext. Los requisitos de FCM deben cumplirse con el manifiesto del dispositivo (los requisitos se aplican en el tiempo de compilación, el tiempo de ejecución y VTS).
La FCM system_ext y el producto FCM son complementos de FCM específico para dispositivo (instalado en la partición del sistema).
- El dispositivo FCM debe reflejar los requisitos de los módulos en el partición del sistema.
- El FCM de system_ext debe reflejar los requisitos por módulos en la partición system_ext.
- El producto FCM debe reflejar los requisitos de los módulos en el partición de producto.
Todos los FCM deben alinearse con las modificaciones del OEM en el framework del sistema, producto y system_ext. Por ejemplo, si una app instalada en la partición de producto usa una extensión de una interfaz HAL, el requisito de interfaz de HAL debe declararse en el producto FCM.
Ejemplo de archivo de matriz de compatibilidad 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>
Para obtener más información, visita FCM. Lifecycle.
Matriz de compatibilidad de productos
El producto FCM es un archivo de matriz de compatibilidad del marco de trabajo del producto por cada partición. El objeto VINTF une el FCM del producto con los FCM del sistema y system_ext particiones en el entorno de ejecución.
Ejemplo de archivo de FCM del producto:
<?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 compatibilidad de system_ext
El FCM system_ext es un archivo de matriz de compatibilidad con el marco de trabajo en el archivo system_ext por cada partición. El objeto VINTF se une a FCM del sistema system_ext con los FCM del sistema y el producto particiones en el entorno de ejecución. Consulta la matriz de compatibilidad de productos. para ver un archivo de ejemplo de FCM system_ext.
Matriz de compatibilidad de dispositivos (DCM)
La matriz de compatibilidad de dispositivos describe un conjunto de requisitos espera del framework (requisitos aplicados en el momento del lanzamiento y de la OTA).
Ejemplo de archivo de 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 compatibilidad
En esta sección, se describe el significado de estas etiquetas XML. Algunos son “obligatorios” etiquetas
pueden faltar del archivo fuente en el árbol de fuentes de Android y escribirse
assemble_vintf
al momento de la compilación. "Obligatorio" las etiquetas deben estar presentes en los archivos correspondientes del
dispositivo.
?xml
- Opcional. Solo proporciona información al analizador de XML.
compatibility-matrix.version
- Obligatorio. Metaversión de esta matriz de compatibilidad. Describe los elementos de la matriz de compatibilidad. No está relacionado con la versión XML.
compatibility-matrix.type
- Obligatorio. Tipo de esta matriz de compatibilidad:
"device"
: Matriz de compatibilidad del dispositivo."framework"
: Matriz de compatibilidad con el framework.
manifest.level
- Obligatorio para la matriz de compatibilidad del marco de trabajo. En Android 12 y versiones posteriores,
permitidos en los archivos de matrices de compatibilidad del framework en las particiones product y system_ext.
Especifica la versión de la matriz de compatibilidad con el framework (versión de FCM) de este archivo. No declarar
en la matriz de compatibilidad del framework específico del dispositivo (es decir,
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). compatibility-matrix.hal
- Opcional y se puede repetir. Enumera una sola HAL (HIDL o nativa) que está
que requiere el propietario de la matriz de compatibilidad (framework o dispositivo)
presente. Las entradas de la HAL se distinguen por un elemento
<name>
. puede haber varias entradas de la HAL con el mismo nombre (implica la condición "y"). compatibility-matrix.hal.format
- Opcional. El valor puede ser uno de los siguientes:
"hidl"
: HAL de HIDL Es el valor predeterminado."aidl"
: HAL de AIDL. Solo es válida en la metaversión 2.0 de la matriz de compatibilidad."native"
: HAL nativas
compatibility-matrix.hal.optional
- El atributo es opcional y su valor predeterminado es falso. indica si esta HAL está
opcional para el propietario de la matriz de compatibilidad (framework o dispositivo). Si un
<hal>
entrada se marca como opcional, lo que significa que el propietario puede Funcionará con esta HAL, si está presente, pero no requiere que lo esté. compatibility-matrix.hal.name
- Obligatorio. Es el nombre completo del paquete de esta HAL. Ejemplos:
android.hardware.camera
(HIDL o HAL del AIDL)GLES
(HAL nativa; solo requiere nombre)
compatibility-matrix.hal.version
-
Una lista de rangos de versiones (consulta
coincidencias del HAL)
que define las versiones que el propietario de la matriz de compatibilidad (framework o
del dispositivo) espera.
En el caso del HIDL y las HALs nativas, se requiere, se pueden repetir sin duplicados. El formato es uno de los siguientes:MAJOR.MINOR_MIN-MINOR_MAX
MAJOR.MINOR
(equivalente aMAJOR.MINOR-MINOR
)
En el caso de las HAL del AIDL, no debe estar presente en dispositivos que ejecuten Android 11 o menos. Opcional en los dispositivos que ejecutan versiones posteriores. Si se especifica, el formato es uno de los siguientes:VERSION_MIN-VERSION_MAX
VERSION
(equivalente aVERSION-VERSION
)
1
. compatibility-matrix.hal.interface
- Opcional; se puede repetir. Lista de interfaces obligatorias de esta HAL.
compatibility-matrix.hal.interface.name
- Obligatorio. Nombre de la interfaz.
compatibility-matrix.hal.interface.instance
- Opcional; se puede repetir. Una lista de las instancias necesarias de esta interfaz.
compatibility-matrix.hal.interface.regex-instance
- Opcional; se puede repetir. Una lista de patrones de nombres de instancias obligatorios en esta interfaz de usuario. Usa Extensión Formato de expresión regular.
compatibility-matrix.kernel
- Opcional; se puede repetir. Especifica una lista de parámetros de configuración de kernel
requiere en cada versión de kernel.
Si se usan varios<kernel>
con el mismo<version>
, se pueden existen para implicar relación. Cada<kernel>
es un "fragmento" de los requisitos que se habilitan solo cuando<conditions>
son que se cumplen. compatibility-matrix.kernel.version
- Obligatorio. Versión de kernel. El Formato es
VERSION.MAJOR_REVISION.MINOR_REVISION
La versión y la revisión principal deben coincidir exactamente. Una revisión menor define la la versión mínima de LTS del kernel que espera el framework. compatibility-matrix.kernel.condition
- Opcional. No debe existir durante los primeros
<kernel>
de cada uno versión. Especifica una lista de condiciones. Cuando se cumplen las condiciones, están habilitados los requisitos establecidos en este fragmento<kernel>
. compatibility-matrix.kernel.config
- Opcional; se puede repetir. Enumera
CONFIG
elementos que deben que coinciden con esta versión de kernel. Cada elementoCONFIG
es un par clave-valor. vincular; los elementos de configuración se distinguen por clave. compatibility-matrix.kernel.config.key
- Obligatorio. Es el nombre de la clave del elemento
CONFIG
. Comienza conCONFIG_
compatibility-matrix.kernel.config.value
- Obligatorio. Valor del elemento
CONFIG
. El formato depende del tipo:string
Se omiten las comillas.int
Decimales y hexadecimales (debe comenzar con0x
) o0X)
valores. Se interpreta como un número entero de 64 bits. los desbordamientos dan lugar a un truncamiento. (El analizador acepta valores de -264 + 1). a 264: 1, 65 bit está truncado; para obtener más información, consulta la falta página man).range
El formato es[int]-[int]
, p.ej.,10-20
Se aceptan valores hexadecimales y deben comenzar con0x
o0X
. Los dos límites deben ser una arquitectura de 64 bits entero.tristate
Los valores válidos sony
,m
yn
compatibility-matrix.kernel.config.value.type
- Obligatorio. Tipo del valor del elemento
CONFIG
, uno de los siguientes:string
int
range
tristate
compatibility-matrix.sepolicy
- Obligatorio. Contiene todas las entradas relacionadas con la política. Solo las usa el matriz de compatibilidad con el framework.
compatibility-matrix.sepolicy.sepolicy-version
- Obligatorio; se puede repetir. Describe los requisitos de la versión de sepolicy.
Corresponde a
manifest.sepolicy.version
. Cada instancia de un define un rango de versiones de sepolicy. compatibility-matrix.sepolicy.kernel-sepolicy-version
- Obligatorio. Declara la versión de
policydb
en la que funciona el framework. tus datos. compatibility-matrix.avb.vbmeta-version
- Opcional que solo usa la matriz de compatibilidad del framework. Declara el
AVB
versión que se usa para firmar
system.img
. Obsoleto en Android 10. compatibility-matrix.vendor-ndk
- Opcional que solo usa la matriz de compatibilidad de dispositivos. Declara el Requisito de la instantánea del proveedor del VNDK. Si falta, no se cumplirá ningún requisito del VNDK. en la imagen del sistema.
compatibility-matrix.vendor-ndk.version
- Obligatorio. Número entero positivo que declara una versión del VNDK requerida por el imagen del proveedor.
compatibility-matrix.vendor-ndk.library
- Opcional; se puede repetir. Declara un conjunto de bibliotecas de VNDK que requiere la
imagen del proveedor. La misma semántica que
manifest.vendor-ndk.library
. compatibility-matrix.system-sdk.version
- Opcional, se puede repetir. que solo usa la matriz de compatibilidad de dispositivos. Declara el requisito de las apps de proveedores en las versiones del SDK del sistema. Si falta, no se muestra el SDK del sistema en la imagen del sistema.