Android 9 e versioni successive include il supporto per lo sviluppo
product
partizioni utilizzando il sistema di build Android. In precedenza,
Android 8.x ha applicato la separazione dei componenti specifici dei SoC
dalla partizione system
a vendor
senza dedicare spazio per i componenti specifici dell'OEM creati
Sistema di build Android. Android 9 e versioni successive offrono
autorizzazioni
e le funzionalità di autorizzazione che si applicano alle app private su partizioni diverse.
Informazioni sulle partizioni dei prodotti
Molti OEM personalizzano l'immagine di sistema AOSP per implementare le proprie funzionalità,
nonché ai requisiti dell'operatore. Tuttavia, queste personalizzazioni
impossibile utilizzare una singola immagine di sistema per più SKU di software. Ciascuna
l'immagine deve essere diversa per supportare le personalizzazioni, ad esempio
paesi o operatori diversi. L'utilizzo di un
separata product
per contenere le personalizzazioni
è possibile utilizzare una singola immagine di sistema per più SKU di software. (La
system
codice generico host della partizione che può essere condiviso tra
molti SKU di software). La partizione vendor
continua a ospitare
Codice BSP specifico per SoC, condivisibile tra più
dispositivi in base al SoC specificato.
L'uso di partizioni separate presenta alcuni svantaggi, ad esempio
gestione dello spazio su disco (una quantità limitata di spazio deve rimanere riservata per uso futuro
crescita) e mantenere
un'interfaccia Application Binary Interface (ABI) stabile tra le partizioni. Prima del giorno
decidere di utilizzare le partizioni product
, prenditi del tempo per considerare le tue
un’implementazione AOSP unica e possibili tattiche di mitigazione (come
il partizionamento di un dispositivo durante una procedura over-the-air
(OTA), che non viene eseguito da Google, ma da alcuni OEM.
Il partizionamento dinamico è
una buona soluzione.
Partizioni e autorizzazioni dei prodotti
In Android 9 e versioni successive, una modifica delle autorizzazioni
e il processo di autorizzazione influisce sul modo in cui concedi le autorizzazioni alle app private
le partizioni "product". Il file permissions.xml
devono trovarsi nella stessa partizione di priv-apps. L'inserimento di un
permissions.xml
file nella partizione system
per le app priv-apps non estende queste autorizzazioni alle app priv-app in product
anche se la prima è un'estensione della seconda.
Per maggiori dettagli sulle autorizzazioni e sui processi di whitelist, consulta
Lista consentita di autorizzazioni con privilegi.
/oem legacy e /product
Abbiamo due tipi di attributi della partizione product
a seconda
sul prodotto
dell'applicazione forzata dell'interfaccia utente. Inoltre, la partizione product
è diversa
rispetto alla partizione oem
precedente:
Partizione | Attributi |
---|---|
oem |
|
product |
|
product (interfacce applicate) |
|
Per questi motivi, Android 9 supporta la partizione product
, mentre
mantenendo il supporto della partizione oem
legacy, per i dispositivi che dipendono
li annotino. Per disaccoppiare la partizione product
da system
la partizione di testo, Android 11 supporta
applicazione di product
interfacce.
/componenti prodotto
La partizione product
contiene i seguenti componenti:
- Proprietà di sistema specifiche del prodotto (
/product/build.prop
) - RRO specifici per prodotto (
/product/overlay/*.apk
) - App specifiche del prodotto (
/product/app/*.apk
) - App priv specifiche del prodotto (
/product/priv-app/*.apk
) - Librerie specifiche del prodotto (
/product/lib/*
) - Librerie Java specifiche del prodotto (
/product/framework/*.jar
) - Configurazioni di sistema Android Framework specifiche del prodotto
(
/product/etc/sysconfig/*
e/product/etc/permissions/*
) - File multimediali specifici del prodotto (
/product/media/audio/*
) - File
bootanimation
specifici del prodotto
Nessuna immagine_personalizzata
Non è possibile utilizzare custom_images
. Non c'è supporto per
seguenti:
- Installazione di moduli in una destinazione specifica.
custom_images
supporta la copia degli artefatti in un'immagine, non può installare un modulo in una partizione specifica specificando la sua destinazione come parte di una regola di build. - Supporto dei brani.
custom_images
non può essere creato usando il sistema di compilazione prestog. - Assistenza per l'aggiornamento OTA. I
custom_images
vengono usati come ROM di fabbrica immagini che non possono ricevere aggiornamenti OTA.
Mantieni le ABI tra le partizioni
La partizione product
in Android 9 è un'estensione della
system
partizione. C'è un'ABI debole tra
partizioni product
e system
, quindi entrambe devono essere
contemporaneamente e l'ABI dovrebbe essere basata su SDK di sistema. Se
l'SDK di sistema non copre tutte le piattaforme API tra product
e
system
, gli OEM devono mantenere le proprie ABI tra
le due partizioni.
Le partizioni product
e system
possono avere
delle dipendenze tra loro. Tuttavia, i test con
Immagine di sistema generica (GSI)
deve funzionare correttamente senza la partizione product
.
Quando vengono applicate le interfacce product
, product
è disaccoppiata dalla partizione system
. product
utilizza solo le interfacce consentite dalla partizione system
.
La partizione product
non deve avere dipendenze tramite interfacce instabili su
vendor
partizione. Interazione diretta tra
Le partizioni product
e vendor
sono vietate.
(questa operazione viene applicata da SEpolicy).
Implementare le partizioni dei prodotti
Prima di implementare una nuova partizione prodotto, esamina il
correlati
le modifiche alla partizione del prodotto in AOSP. Poi, per configurare product
:
includi le seguenti segnalazioni per la build del prodotto o la bacheca:
BOARD_USES_PRODUCTIMAGE
BOARD_PRODUCTIMAGE_PARTITION_SIZE
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
PRODUCT_PRODUCT_PROPERTIES
per/product/build.prop
. Questi devono essere all'interno di un valore$(call inherit-product path/to/device.mk)
, come inPRODUCT_PRODUCT_PROPERTIES += product.abc=ok
.
Installa un modulo nella partizione product
Usa i seguenti flag di build per installare un modulo nella partizione product
.
product_specific: true
inAndroid.bp
LOCAL_PRODUCT_MODULE := true
inAndroid.mk
Abilita Avvio verificato
Per impedire che la partizione product
venga manomessa
software dannoso,
Android
Avvio verificato (AVB) per quella partizione (come fai per la
vendor
e system
partizioni). Per attivare AVB:
includi i seguenti flag di build:
BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS
.