Particiones de producto

Android 9 y las versiones posteriores admiten compilación Partición de product con el sistema de compilación de Android. Anteriormente, Android 8.x aplicó la separación de componentes específicos de SoC. de la partición system a vendor sin dedicar espacio para los componentes específicos de OEM compilados a partir del Sistema de compilación de Android Android 9 y las versiones posteriores ofrecen permisos y listas blancas que se aplican a apps privadas en diferentes particiones.

Información acerca de las particiones de productos

Muchos OEM personalizan la imagen del sistema del AOSP para implementar sus propias funciones. así como los requisitos de las empresas de transporte. Sin embargo, esas personalizaciones hacen que es imposible usar una sola imagen de sistema para varios SKU de software. Cada La imagen debe ser diferente para admitir las personalizaciones, como con diferentes ubicaciones u operadores de telefonía celular. Con un una partición product separada para contener personalizaciones hace que es posible usar una sola imagen de sistema para varios SKU de software. (El La partición system aloja un código genérico que se puede compartir entre muchos SKU de software). La partición vendor continúa alojando Código BSP específico de SoC que puede compartirse entre varias en función del SoC determinado.

Usar particiones separadas tiene algunas desventajas, como administrar el espacio en el disco (se debe reservar una cantidad limitada de espacio para uso futuro crecimiento) y manteniendo una interfaz binaria de aplicación (ABI) estable entre particiones. Antes decidir usar particiones product, tómate el tiempo para considerar tu implementación única del AOSP y posibles tácticas de mitigación (como la repartición de un dispositivo durante una transmisión inalámbrica (OTA) que no realiza Google, pero que algunos OEM realizan). La partición dinámica es una buena solución para esto.

Particiones y permisos de productos

En Android 9 y versiones posteriores, un cambio en los permisos y el proceso de inclusión en la lista blanca afecta la forma en que otorgas permisos de Priv-Apps en las particiones del `producto`. El archivo permissions.xml debe residir en la misma partición que priv-apps. Colocar un Archivo permissions.xml en la partición system El permiso de priv-apps no extiende esos permisos a priv-apps en product. aunque el primero es una extensión de la segunda. Para obtener información sobre los permisos y procesos de inclusión en la lista blanca, consulta Lista de entidades permitidas de permisos con privilegios.

Heredado /oem versus /product

Tenemos dos tipos de atributos de la partición product, dependiendo sobre el producto aplicación forzosa de la interfaz. Además, la partición product es diferente que la partición oem heredada:

Partición Atributos
oem
  • No se puede actualizar. por lo general, se instala una vez en la fábrica.
  • Creada con pequeñas variaciones, como el desarrollo de la marca y el color. Tener un contenido diferente de la partición oem no significa que el producto software es diferente.
  • La partición system no depende de la partición oem. (Usa el oem solo cuando se encuentra un archivo específico allí).
  • Solo usa la API pública en la partición system.
product
  • Actualizable
  • Junto con la imagen del sistema (se actualizan juntas)
  • Creado por productos o familias de productos.
  • La partición del sistema puede depender de la partición product.
  • Pueden usar APIs no públicas, ya que se actualizan simultáneamente.
product (interfaces aplicadas)
  • Actualizable
  • Se desacopla de la imagen del sistema.
  • Creado por productos o familias de productos.
  • La partición system no depende de la product por cada partición.
  • No se pueden usar APIs ocultas; solo se usan APIs públicas y del sistema en la system.

Por estos motivos, Android 9 admite la partición product, mientras que sin perder la compatibilidad con la partición oem heredada, para los dispositivos que dependen de que la modifica. Para separar la partición product de system partición, Android 11 admite aplicar product interfaces de programación de aplicaciones.

/componentes del producto

La partición product contiene los siguientes componentes:

  • Propiedades del sistema específicas del producto (/product/build.prop)
  • RRO específicas del producto (/product/overlay/*.apk)
  • Apps de productos específicos (/product/app/*.apk)
  • Priv-apps específicas del producto (/product/priv-app/*.apk)
  • Bibliotecas de productos específicos (/product/lib/*)
  • Bibliotecas Java específicas del producto (/product/framework/*.jar)
  • Parámetros de configuración del sistema del framework de Android específicos del producto (/product/etc/sysconfig/* y /product/etc/permissions/*)
  • Archivos multimedia específicos del producto (/product/media/audio/*)
  • Archivos bootanimation específicos del producto

No hay imágenes_personalizadas

No puedes usar custom_images. No tienen apoyo para la lo siguiente:

  • Instala módulos en un destino específico. custom_images admite la copia de artefactos en una imagen, pero no puede instalar un módulo en una partición específica especificando su destino partición como parte de una regla de compilación.
  • Asistencia de Soong. custom_images no puede ser con el sistema de compilación de Soong.
  • Compatibilidad con actualizaciones OTA: Se usan custom_images como ROM de fábrica que no pueden recibir actualizaciones inalámbricas.

Cómo mantener las ABI entre particiones

La partición product en Android 9 es una extensión del system. Existe una ABI débil entre particiones product y system, por lo que ambas deben al mismo tiempo, y la ABI debería estar basada en el SDK del sistema. Si el botón no abarca todas las plataformas de API entre product y system, los OEM deben mantener sus propias ABI entre las dos particiones.

Las particiones product y system pueden tener dependencias entre sí. Sin embargo, las pruebas con el Imagen genérica del sistema (GSI) debe funcionar correctamente sin la partición product.

Cuando se aplican las interfaces product, el elemento product está desacoplada de la partición system. El product usa solo las interfaces permitidas de la partición system.

La partición product no debe depender de interfaces inestables en vendor. Interacción directa entre Las particiones product y vendor están prohibidas. (Esto se aplica según la política de SE).

Implementa particiones de productos

Antes de implementar una nueva partición de producto, revisa el relacionados cambios en la partición de productos en AOSP. Luego, para configurar product, haz lo siguiente: incluye las siguientes marcas de compilación de producto o placa:

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

Instala un módulo en la partición de producto

Usa las siguientes marcas de compilación para instalar un módulo en la partición product.

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

Habilitar el inicio verificado

Para evitar que manipule la partición product o cualquier otro software malicioso, En Android el inicio verificado (AVB) de esa partición (tal como lo haces con vendor y system). Para habilitar AVB, incluye las siguientes marcas de compilación: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS.