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

Particiones de producto

Android 9 y superior incluye el apoyo para la construcción product de particiones con el sistema de construcción de Android. Anteriormente, 8.x Android cumplir la separación de los componentes SoC-específicos del system partición al vendor partición sin dedicar espacio para componentes OEM-específicos construidos a partir del sistema de construcción Android. Android 9 y posterior sirve adicionales permisos y características de lista blanca que se aplican a priv-aplicaciones en particiones diferentes.

Acerca de las particiones de productos

Muchos OEM personalizan la imagen del sistema AOSP para implementar sus propias funciones, así como los requisitos del operador. Sin embargo, estas personalizaciones hacen que sea imposible utilizar una única imagen del sistema para varios SKU de software. Cada imagen debe ser diferente para admitir las personalizaciones, como con diferentes configuraciones regionales o operadores. El uso de un separada product partición para contener personalizaciones hace que sea posible el uso de una imagen del sistema único para el software de múltiples SKU. (El system anfitriones de partición código genérico que puede ser compartido entre muchos software de SKUs). El vendor partición sigue anfitrión código BSP SoC-específica que puede ser compartido entre múltiples dispositivos basados en la propuesta SoC.

El uso de particiones separadas tiene algunas desventajas, tales como la gestión de espacio en disco (una cantidad limitada de espacio debe permanecer reservado para el crecimiento futuro) y el mantenimiento de una interfaz binaria de aplicación estable (ABI) entre particiones. Antes de decidir utilizar product particiones, tome tiempo para considerar su aplicación AOSP único y posibles tácticas de mitigación (como volver a particionar un dispositivo durante una actualización over-the-air (OTA) , que no se hace por Google, sino que se hace por parte de algunos fabricantes de equipos originales ). Particionamiento dinámico será una buena solución para esto.

Permisos y particiones de productos

En Android 9 y superior, un cambio en los permisos y el proceso de inclusión en la lista blanca afecta la forma en que otorga permisos de aplicaciones privadas en las particiones de su "producto". El permissions.xml archivo debe residir en la misma partición que los priv-aplicaciones. La colocación de un permissions.xml archivo en el system partición para priv-aplicaciones no se extiende esos permisos a priv-aplicaciones en el product partición, a pesar de que el primero es una extensión de este último. Para más detalles sobre los permisos y procesos de listas blancas, ver privilegiado Permiso Whitelisting .

Legacy / oem vs / product

Tenemos dos tipos de atributos del product partición en función de la aplicación de la interfaz del producto . Además, el product partición es diferente que el legado oem partición:

Dividir Atributos
oem
  • No actualizable; normalmente parpadeaba una vez en la fábrica.
  • Construido con pequeñas variaciones, como la marca y el color. Tener diferentes oem contenidos de partición no significa que el software del producto es diferente.
  • El system partición no depende de la oem partición. (Se utiliza el oem partición sólo cuando un archivo específico se encuentra allí).
  • Sólo utiliza API pública en el system partición.
product
  • Actualizable
  • Junto con la imagen del sistema (se actualizan juntos)
  • Construido por producto o familias de productos.
  • Partición del sistema puede depender de product partición.
  • Puede usar API no públicas ya que se actualizan simultáneamente.
product (interfaces forzadas)
  • Actualizable
  • Desacoplado con la imagen del sistema.
  • Construido por producto o familias de productos.
  • El system partición no depende de la product partición.
  • No se puede utilizar las API ocultos, pero sólo utiliza las API públicas y del sistema en el system partición.

Por estas razones, Android 9 soporta el product partición, manteniendo el apoyo a la herencia oem partición, para dispositivos que dependen de ella. Para desacoplar el product partición del system partición, Android 11 soporta la aplicación product de interfaces .

/ componentes del producto

El product partición contiene los siguientes componentes:

  • Las propiedades del sistema específica del producto ( /product/build.prop )
  • RRO-específicas del producto ( /product/overlay/*.apk )
  • Aplicaciones específicas del producto ( /product/app/*.apk )
  • -Específicas del producto priv-aplicaciones ( /product/priv-app/*.apk )
  • Bibliotecas específicas de producto ( /product/lib/* )
  • Bibliotecas específicas de producto de Java ( /product/framework/*.jar )
  • Configuraciones específicas del producto Sistema de bastidor Android ( /product/etc/sysconfig/* y /product/etc/permissions/* )
  • Archivos de medios específicos de producto ( /product/media/audio/* )
  • -Específicas del producto bootanimation archivos

No hay imágenes personalizadas

No se puede utilizar custom_images . Carecen de apoyo para lo siguiente:

  • Instalación de módulos en un objetivo específico. custom_images admite la copia de objetos en una imagen, pero no pueden instalar un módulo en una partición específica especificando su partición de destino como parte de una regla de construcción.
  • Soong apoyo. custom_images no se pueden construir usando el sistema de construcción de Soong.
  • Soporte de actualización OTA. custom_images se utilizan como imágenes ROM de fábrica que no pueden recibir actualizaciones OTA.

Mantener ABI entre particiones

El product partición en Android 9 es una extensión de la system partición. Hay una ABI débil entre product y system particiones, por lo tanto se deben actualizar al mismo tiempo, y el ABI deberían basarse en el SDK del sistema. Si el sistema de SDK no cubre todas las superficies de la API entre product y el system , OEM deben mantener sus propias ABIs entre las dos particiones.

Los product y system particiones pueden tener dependencia de unos a otros. Sin embargo, las pruebas con la imagen de un sistema genérico (GSI) deben funcionar correctamente sin el product partición.

Cuando los product se hacen cumplir las interfaces, el product partición se desacopla con el system partición. El product partición utiliza sólo las interfaces permiten cambios desde el system partición.

El product partición no debe tener ninguna dependencia de vendor partición. La interacción directa entre los product y el vendor está prohibido particiones. (Esto es impuesto por SEpolicy).

Implementar particiones de productos

Antes de implementar una nueva partición producto, revise los cambios de partición de productos relacionados con AOSP . Entonces, para configurar product , se incluyen las siguientes banderas de mesa o producto y construcción:

  • BOARD_USES_PRODUCTIMAGE
  • BOARD_PRODUCTIMAGE_PARTITION_SIZE
  • BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
  • PRODUCT_PRODUCT_PROPERTIES para /product/build.prop . Estos deben estar dentro de un $(call inherit-product path/to/device.mk) , como en PRODUCT_PRODUCT_PROPERTIES += product.abc=ok .

Instalación de un módulo en la partición del producto

Use las siguientes banderas de construcción para instalar un módulo para el product partición.

  • product_specific: true en Android.bp
  • LOCAL_PRODUCT_MODULE := true en Android.mk

Habilitación del arranque verificado

Para evitar que el product partición de ser manipulado por software malintencionado, permitirá Android inicio verificado (BAV) para esa partición (tal como lo hace para los vendor y el system particiones). Para habilitar AVB, incluyen las siguientes banderas de compilación: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS .