Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Particiones ODM

Android 10 incluye soporte para construir particiones odm usando el sistema de compilació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, puede usar una partición odm separada para personalizaciones, lo que le permite usar una imagen de proveedor único para múltiples SKU de hardware.

Uso de particiones de producto y ODM

Android 9 agregó soporte para crear particiones de product , lo que permite el uso de una sola imagen del sistema para múltiples SKU de software suministradas por diferentes imágenes product.img . Mientras que la partición de product está destinada a SKU de software, la partición odm está destinada a SKU de hardware.

Con particiones de producto y ODM dedicadas, puede usar la partición del system para alojar código genérico para compartir entre muchas SKU de software, y la partición de vendor para alojar código BSP específico de SoC para compartir entre varios dispositivos según el SoC dado.

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, la compatibilidad con Android 10 para particiones dinámicas elimina el problema del disco y permite volver a particionar un dispositivo durante una actualización inalámbrica (OTA) .

Componentes ODM

La partición odm contiene los siguientes componentes específicos de ODM (similares a la partición del vendor ), que se enumeran en la siguiente tabla.

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
archivos init.rc /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 use imágenes personalizadas porque carecen de soporte para lo siguiente:

  • 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 puede construir usando el sistema de construcción 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

La partición odm es una extensión de la partición del vendor . 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. Mantenimiento de ABI entre particiones
  • No hay estabilidad ABI entre odm y particiones de vendor . Ambas particiones deben actualizarse al mismo tiempo.
  • Las particiones de vendor y odm pueden depender entre sí, pero la partición de vendor debe funcionar sin una partición de odm .
  • El ABI entre odm y el system es el mismo que el ABI entre el vendor y el system .

No se permite la interacción directa entre la partición del product y el vendor o la partición odm . (Esto es impuesto por SEpolicy).

Implementar particiones ODM

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

Configurar particiones ODM

Para configurar particiones odm , incluya estos indicadores de compilación:

  • BOARD_ODMIMAGE_PARTITION_SIZE para un tamaño de partición fijo
  • PRODUCT_USE_DYNAMIC_PARTITIONS y BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE para un tamaño de partición dinámica
  • BOARD_ODMIMAGE_FILE_SYSTEM_TYPE tipo de sistema de archivos utilizado para la imagen ODM
  • PRODUCT_ODM_PROPERTIES para /odm/build.prop para usar 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

Utilice estos indicadores de compilación para instalar un módulo en una partición odm :

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

Habilitación de arranque verificado

Para evitar que el software malintencionado odm particiones odm , habilite el Arranque verificado de Android (AVB) para esas particiones (tal como lo hace para vendor particiones del system y del vendor ).

Para habilitar AVB, incluya el indicador de compilación BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS . Para obtener detalles sobre la configuración de AVB en particiones dinámicas, consulte los cambios de configuración de AVB .

Tratar / odm como otra partición / proveedor

Para asegurarse de que el sistema maneja la partición odm como una partición de vendor , reemplace cualquier referencia de vendor codificada de forma rígida con un conjunto de particiones orientadas al hardware (actualmente odm y vendor ). Las ubicaciones de referencia de vendor notables en la plataforma incluyen enlazador dinámico , administrador de paquetes y shell/libc .