Android 10 admite la compilación
Partición de odm
con el sistema de compilación de Android.
Información acerca de las particiones ODM
Los fabricantes de diseño original (ODM) personalizan el proveedor de sistema en chip (SoC) paquetes de compatibilidad para placas (BSP) a sus dispositivos específicos (sus placas). Esta les permite implementar módulos de kernel para componentes específicos de la placa, daemons específicos de la placa o sus propias funciones en capas de abstracción de hardware, (HAL). También es posible que quieras reemplazar o personalizar componentes del SoC.
En versiones anteriores de Android, esas personalizaciones impedían el uso de un solo
imagen del proveedor para dispositivos con el mismo SoC (o con diferentes SoC, pero en el
misma familia). En Android 10 y versiones posteriores, puedes usar un
una partición de odm
separada para personalizaciones, lo que te permite
usar una sola imagen de proveedor
para varios SKU de hardware.
Cómo usar particiones de productos y ODM
Android 9 agregó compatibilidad para compilar
product
particiones, lo que permite usar una sola imagen del sistema para varios software
SKU proporcionados por diferentes imágenes de product.img
. Si bien el
product
está pensada para SKU de software, el
La partición odm
está diseñada para SKU de hardware.
Con particiones dedicadas de producto y ODM, puedes usar el system
para alojar un código genérico que se comparta entre muchos SKU de software, y las
Partición vendor
para alojar el código BSP específico del SoC para compartir
varios dispositivos basados en el SoC determinado.
Usar particiones separadas tiene desventajas, como la dificultad de administrar espacio en disco (por ejemplo, debes reservar una cantidad limitada de espacio para futuras crecimiento). Sin embargo, la compatibilidad de Android 10 con particiones dinámicas elimina el problema del disco y facilita la repartición de un dispositivo durante una una actualización inalámbrica.
Componentes de ODM
La partición odm
contiene los siguientes componentes específicos de ODM.
(similar a la partición vendor
), que se muestra en la siguiente tabla.
Componente específico de ODM | Ubicación |
---|---|
Módulos de kernel cargables (LKMs) | /odm/lib/modules/*.ko |
Bibliotecas nativas | /odm/lib[64] |
HAL | /odm/lib[64]/hw |
Política de SE | /odm/etc/selinux |
Objeto VINTF datos | /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 |
Apps | /odm/app/*.apk |
Apps de privilegios | /odm/priv-app/*.apk |
Bibliotecas Java | /odm/framework/*.jar |
Parámetros de configuración del sistema del framework de Android | /odm/etc/sysconfig/* y /odm/etc/permissions/* |
No hay imágenes personalizadas
No utilizar personalizado imágenes porque no admiten lo siguiente:
- Instalación de un módulo para un destino específico. Las imágenes personalizadas permiten copiar artefactos en una imagen, pero no instalar un módulo en una partición específica especificando la partición de destino como parte de una regla de compilación.
- Pronto. No se puede compilar
custom_images
usando el sistema de compilación de Soong. - Actualización OTA. Las imágenes personalizadas se usan como imágenes de ROM de fábrica que no se pueden transmitir de forma inalámbrica.
Cómo mantener las ABI entre particiones
La partición odm
es una extensión de vendor
por cada partición. Cuando consideres la estabilidad de la interfaz binaria de la aplicación (ABI), mantén
la siguiente arquitectura.
Figura 1: Mantenimiento de la ABI entre particiones.
- No hay estabilidad de ABI entre
odm
yvendor
particiones. Ambas particiones se deben actualizar en la misma tiempo. - Las particiones
odm
yvendor
pueden depender de entre sí, pero la particiónvendor
debe funcionar sin una particiónodm
. - La ABI entre
odm
ysystem
es la misma que la ABI entrevendor
ysystem
.
Interacción directa entre la partición product
y el
La partición vendor
o odm
no es
permitidos. (Esto se aplica según la política de SE).
Cómo implementar particiones ODM
Antes de implementar una partición nueva, revisa el AOSP relacionado de la configuración.
Configurar particiones ODM
Para configurar particiones odm
, incluye estas marcas de compilación:
BOARD_ODMIMAGE_PARTITION_SIZE
para un tamaño de partición fijoPRODUCT_USE_DYNAMIC_PARTITIONS
yBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
para un partición dinámica tamañoBOARD_ODMIMAGE_FILE_SYSTEM_TYPE
que se usa para el Imagen ODMPRODUCT_ODM_PROPERTIES
por/odm/build.prop
para usar dentro de un$(call inherit-product path/to/device.mk)
, como enPRODUCT_ODM_PROPERTIES += product.abc=ok
Instala un módulo en una partición ODM
Usa estas marcas de compilación para instalar un módulo en una partición odm
:
device_specific: true
enAndroid.bp
LOCAL_ODM_MODULE := true
enAndroid.mk
Habilitar el inicio verificado
Para evitar que software malicioso manipule las particiones de odm
,
habilitar el inicio verificado de Android
(AVB) para esas particiones (tal como lo haces con vendor
y
system
).
Para habilitar AVB, incluye la marca de compilación
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
. Para obtener detalles sobre la configuración
AVB en particiones dinámicas, consulta
Configuración de AVB
de la configuración.
Tratar /odm como otra partición /vendor
Para garantizar que el sistema controle la partición odm
como una
Partición de vendor
, reemplaza cualquier vendor
codificada de forma fija
con un conjunto de particiones orientadas al hardware (actualmente,
odm
y vendor
). Destacado vendor
ubicaciones de referencia en la plataforma incluyen
dinámica
vinculador,
paquete
administrador y shell/libc
.