Android 9 et versions ultérieures permettent de compiler
Partitions product
à l'aide du système de compilation Android. Auparavant,
Android 8.x a forcé la séparation des composants spécifiques au SoC
depuis la partition system
vers vendor
sans dédier de l'espace aux composants OEM créés à partir du
Système de compilation Android Android 9 ou version ultérieure offre
autorisations
et de liste blanche qui s'appliquent aux applications privées sur différentes partitions.
À propos des partitions de produits
De nombreux OEM personnalisent l'image
système AOSP pour implémenter leurs propres fonctionnalités,
ainsi que celles des opérateurs. Cependant, de telles personnalisations
impossible d'utiliser une seule image système
pour plusieurs SKU de logiciels. Chaque
l'image doit être différente pour prendre en charge les personnalisations, par exemple avec
pays ou opérateurs différents. Avec un
la partition product
distincte pour y inclure les personnalisations.
d'utiliser une seule image système
pour plusieurs SKU de logiciels. (Le
La partition system
héberge du code générique pouvant être partagé entre
de nombreux SKU). La partition vendor
continue d'héberger
Code BSP spécifique au SoC, qui peut être partagé entre plusieurs
en fonction du SoC donné.
L'utilisation de partitions distinctes présente certains inconvénients, tels que
la gestion de l'espace disque (un espace limité doit rester réservé pour de futurs
(croissance) et maintenir
une interface binaire d'application (ABI) stable entre les partitions. Avant
si vous décidez d'utiliser des partitions product
, prenez le temps de réfléchir à vos
une implémentation unique de l'AOSP et des tactiques d'atténuation possibles (comme
le repartitionnement d'un périphérique lors d'une opération Over The Air
(OTA), qui n'est pas effectuée par Google, mais par certains OEM).
Le partitionnement dynamique est
est une bonne solution à cela.
Partitions et autorisations des produits
Dans Android 9 et versions ultérieures, une modification des autorisations
et d'ajout à la liste blanche affecte la façon dont vous accordez des autorisations d'applications privées
vos partitions "product". Le fichier permissions.xml
doivent se trouver sur la même partition que les applications privées. Placer un
Fichier permissions.xml
dans la partition system
pour les applications privées n'étend pas ces autorisations aux applications privées dans le product
.
partition, même si la première est une extension de la seconde.
Pour plus d'informations sur les autorisations et les processus d'ajout à la liste blanche, consultez
Liste d'autorisation des autorisations privilégiées
Comparaison entre /oem et /product
Nous avons deux types d'attributs de la partition product
en fonction
sur le produit
de l'interface utilisateur. De plus, la partition product
est différente
que l'ancienne partition oem
:
Partition | Attributs |
---|---|
oem |
|
product |
|
product (interfaces forcées) |
|
C'est pourquoi Android 9 prend en charge la partition product
tout en
conserve la prise en charge de l'ancienne partition oem
, pour les appareils qui dépendent de
Pour dissocier la partition product
de la system
partition, Android 11 prend en charge
application forcée de product
de commande.
/composants du produit
La partition product
contient les composants suivants:
- Propriétés système spécifiques au produit (
/product/build.prop
) - RRO spécifiques au produit (
/product/overlay/*.apk
) - Applications spécifiques aux produits (
/product/app/*.apk
) - Applications privées spécifiques au produit (
/product/priv-app/*.apk
) - Bibliothèques spécifiques aux produits (
/product/lib/*
) - Bibliothèques Java spécifiques au produit (
/product/framework/*.jar
) - Configurations système du framework Android spécifiques au produit
(
/product/etc/sysconfig/*
et/product/etc/permissions/*
). - Fichiers multimédias spécifiques au produit (
/product/media/audio/*
) - Fichiers
bootanimation
spécifiques au produit
Aucune image personnalisée
Vous ne pouvez pas utiliser custom_images
. Ils ne sont pas compatibles avec
suivantes:
- Installer des modules sur une cible spécifique
custom_images
permet de copier des artefacts dans une image, mais impossible d'installer un module dans une partition spécifique en spécifiant sa cible partition dans le cadre d'une règle de compilation. - Compatibilité avec Soong :
custom_images
ne peut pas être créé à l'aide du système de compilation Soong. - Prise en charge des mises à jour OTA. Les
custom_images
sont utilisés comme mémoire ROM d'usine qui ne peuvent pas recevoir de mises à jour OTA.
Conserver les ABI entre les partitions
La partition product
dans Android 9 est une extension de
la partition system
. L'ABI est faible entre
les partitions product
et system
, donc les deux doivent être
sont mises à niveau en même temps, et l'ABI doit être basée sur le SDK du système. Si le
le SDK système ne couvre pas toutes les surfaces d'API entre product
et
system
, les OEM doivent gérer leurs propres ABI entre
entre les deux partitions.
Les partitions product
et system
peuvent avoir
de dépendance les uns
des autres aux autres. Toutefois, les tests avec la méthode
Image système générique (GSI)
doit fonctionner correctement sans la partition product
.
Lorsque les interfaces product
sont appliquées, le product
est découplée avec la partition system
. product
utilise uniquement les interfaces autorisées de la partition system
.
La partition product
ne doit avoir aucune dépendance via des interfaces instables sur
la partition vendor
. Interaction directe
Les partitions product
et vendor
sont interdites.
(Cette règle est appliquée par SEpolicy.)
Implémenter des partitions de produits
Avant d'implémenter une nouvelle partition de produits, consultez le
modifications de la partition des produits dans AOSP. Ensuite, pour configurer product
,
inclure les indicateurs de tableau ou de build de produit suivants:
BOARD_USES_PRODUCTIMAGE
BOARD_PRODUCTIMAGE_PARTITION_SIZE
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
PRODUCT_PRODUCT_PROPERTIES
pour/product/build.prop
. Ils doivent être compris dans un$(call inherit-product path/to/device.mk)
, comme dansPRODUCT_PRODUCT_PROPERTIES += product.abc=ok
.
Installer un module dans la partition de produits
Utilisez les options de compilation suivantes pour installer un module sur la partition product
.
product_specific: true
enAndroid.bp
LOCAL_PRODUCT_MODULE := true
enAndroid.mk
Activer le démarrage validé
Pour éviter que la partition product
ne soit altérée par
des logiciels malveillants,
Sur Android
le démarrage validé pour cette partition (tout comme vous
partitions vendor
et system
). Pour activer l'AVB,
inclure les indicateurs de compilation suivants:
BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS