Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Particiones ODM

Android 10 incluye soporte para la construcción odm particiones con el sistema de construcción de Android.

Acerca de las particiones ODM

Los fabricantes de diseño original (ODM) personalizan los paquetes de soporte de placa (BSP) del proveedor del sistema en chip (SoC) para sus dispositivos específicos (sus placas). Esto les permite implementar módulos del kernel para componentes específicos de la placa, demonios específicos de la placa o sus propias características en capas de abstracción de hardware (HAL). También pueden querer reemplazar o personalizar componentes de SoC.

En versiones anteriores de Android, tales personalizaciones impedían el uso de una única imagen de proveedor para dispositivos con el mismo SoC (o con diferentes SoC, pero en la misma familia). En Android 10 y superior, se puede utilizar un separada odm partición para las personalizaciones, que le permite utilizar una imagen de un único proveedor de hardware de múltiples SKU.

Uso de particiones de producto y ODM

Android 9 soporte adicional para la construcción product particiones , lo que permite el uso de una única imagen de sistema para el software de múltiples SKU suministrada por diferentes product.img imágenes. Mientras que el product partición está previsto para el software SKU, el odm partición está destinado para el hardware SKU.

Con particiones de productos y ODM dedicados, se puede utilizar el system partición de acogida código genérico para compartir entre los muchos programas de SKUs, y el vendor partición de código BSP-SoC específica de acogida para compartir entre múltiples dispositivos basados en el SoC dada.

El uso de particiones separadas tiene desventajas, como la dificultad para administrar el espacio en disco (por ejemplo, debe reservar una cantidad limitada de espacio para el crecimiento futuro). Sin embargo, Android 10 soporte para particiones dinámicas elimina el problema de disco, y hace volver a particionar un dispositivo durante un over-the-air (OTA) de actualización posible.

Componentes ODM

El odm partición contiene los siguientes componentes ODM-específicos (similares al vendor partición), enumerados en la tabla siguiente.

Componente específico de ODM Localización
Módulos de kernel cargables (LKM) /odm/lib/modules/*.ko
Bibliotecas nativas /odm/lib[64]
HAL /odm/lib[64]/hw
SEPolicy /odm/etc/selinux
Datos del objeto VINTF /odm/etc/vintf
init.rc archivos /odm/etc/init
Propiedades del sistema /odm/build.prop
Superposiciones de recursos en tiempo de ejecución (RRO) /odm/overlay/*.apk
Aplicaciones /odm/app/*.apk
Priv-aplicaciones /odm/priv-app/*.apk
Bibliotecas Java /odm/framework/*.jar
Configuraciones del sistema de Android Framework /odm/etc/sysconfig/* y /odm/etc/permissions/*

Sin imágenes personalizadas

No utilice imágenes personalizadas porque carecen de soporte para los siguientes:

  • Instalación de un módulo a un objetivo específico. Las imágenes personalizadas admiten la copia de artefactos en una imagen, pero no pueden instalar un módulo en una partición específica especificando la partición de destino como parte de una regla de compilación.
  • Soong. custom_images no se pueden construir usando el sistema de construcción de Soong.
  • Actualización OTA. Las imágenes personalizadas se utilizan como imágenes ROM de fábrica que no se pueden editar con OTA.

Mantener ABI entre particiones

El odm partición es una extensión del vendor partición. Al considerar la estabilidad de la interfaz binaria de la aplicación (ABI), tenga en cuenta la siguiente arquitectura.

Mantener ABI entre particiones
Figura 1. El mantenimiento de ABI entre particiones
  • No hay estabilidad ABI entre odm y vendor particiones. Ambas particiones deben actualizarse al mismo tiempo.
  • Los odm y vendor particiones pueden depender unos de otros, pero el vendor partición deben trabajar sin un odm partición.
  • El ABI entre odm y system es el mismo que el ABI entre vendor y system .

La interacción directa entre el product de la partición y el vendor o odm no está permitido partición. (Esto es impuesto por SEpolicy).

Implementar particiones ODM

Antes de implementar una nueva partición, revise los cambios relacionados AOSP .

Configurar particiones ODM

Para configurar odm particiones, incluir estas banderas de compilación:

  • BOARD_ODMIMAGE_PARTITION_SIZE para un tamaño de tabique fijo
  • PRODUCT_USE_DYNAMIC_PARTITIONS y BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE para una partición dinámica tamaño
  • BOARD_ODMIMAGE_FILE_SYSTEM_TYPE tipo de sistema de archivos utilizado para la imagen del ODM
  • PRODUCT_ODM_PROPERTIES para /odm/build.prop para su uso dentro de un $(call inherit-product path/to/device.mk) , como en PRODUCT_ODM_PROPERTIES += product.abc=ok

Instalación de un módulo en una partición ODM

Utilizar estas banderas de construcción para instalar un módulo a un odm partición:

  • device_specific: true en Android.bp
  • LOCAL_ODM_MODULE := true en Android.mk

Habilitación de arranque verificado

Para evitar que el software malicioso de manipulación de los odm particiones, permitirá Android inicio verificado (BAV) de dichas particiones (tal como lo hace para los vendor y el system particiones).

Para habilitar AVB, llevar la bandera acumulación BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS . Para más detalles sobre la configuración de BAV en particiones dinámicas, vea los cambios de configuración AVB .

Tratar / odm como otra partición / proveedor

Para garantizar que las asas del sistema del odm de partición como un vendor partición, reemplazan cualquier modificables vendor referencias con un conjunto de particiones orientados al hardware (actualmente odm y vendor ). Notables vendor ubicaciones de referencia en la plataforma incluyen enlazador dinámico , gestor de paquetes , y shell/libc .