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 |
|
product |
|
product (interfaces aplicadas) |
|
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 enPRODUCT_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
enAndroid.bp
LOCAL_PRODUCT_MODULE := true
enAndroid.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
.