Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Partizioni del prodotto

Android 9 e versioni successive includono il supporto per la creazione di partizioni del product utilizzando il sistema di build Android. In precedenza, Android 8.x imponeva la separazione dei componenti specifici del SoC dalla partizione di system alla partizione del vendor senza dedicare spazio ai componenti specifici dell'OEM creati dal sistema di build Android. Android 9 e versioni successive forniscono autorizzazioni aggiuntive e funzionalità di whitelist che si applicano alle app private su partizioni diverse.

Informazioni sulle partizioni del prodotto

Molti OEM personalizzano l'immagine del sistema AOSP per implementare le proprie funzionalità, nonché i requisiti del vettore. Tuttavia, tali personalizzazioni rendono impossibile utilizzare una singola immagine di sistema per più SKU software. Ogni immagine deve essere diversa per supportare le personalizzazioni, ad esempio con impostazioni locali o operatori diversi. L'utilizzo di una partizione del product separata per contenere le personalizzazioni rende possibile utilizzare un'unica immagine di sistema per più SKU software. (La partizione di system ospita codice generico che può essere condiviso tra molti SKU software). La partizione del vendor continua a ospitare il codice BSP specifico del SoC che può essere condiviso tra più dispositivi in ​​base al SoC specificato.

L'utilizzo di partizioni separate presenta alcuni svantaggi, come la gestione dello spazio su disco (una quantità limitata di spazio deve rimanere riservata per la crescita futura) e il mantenimento di un'interfaccia binaria dell'applicazione (ABI) stabile tra le partizioni. Prima di decidere di utilizzare product partizioni del product , prenditi del tempo per considerare la tua implementazione AOSP unica e le possibili tattiche di mitigazione (come il ripartizionamento di un dispositivo durante un aggiornamento over-the-air (OTA) , che non viene eseguito da Google ma da alcuni OEM ). Il partizionamento dinamico sarà una buona soluzione per questo.

Partizioni e autorizzazioni del prodotto

In Android 9 e versioni successive, una modifica alle autorizzazioni e al processo di whitelisting influisce sul modo in cui concedi i permessi delle app private alle partizioni del tuo "prodotto". Il file permissions.xml deve risiedere nella stessa partizione delle app priv. Posizionare un file permissions.xml nella partizione di system per le app priv non estende tali autorizzazioni alle app priv nella partizione del product , anche se la prima è un'estensione della seconda. Per dettagli sulle autorizzazioni e sui processi di whitelist, vedere Whitelisting di autorizzazioni privilegiate .

Legacy / oem vs / prodotto

Abbiamo due tipi di attributi della partizione del product seconda dell'applicazione dell'interfaccia del prodotto . Inoltre, la partizione del product è diversa dalla partizione oem legacy:

Partizione Attributi
oem
  • Non aggiornabile; di solito lampeggiava una volta in fabbrica.
  • Costruito per piccole variazioni, come il marchio e il colore. Avere contenuti di partizioni oem diversi non significa che il software del prodotto sia diverso.
  • La partizione di system non dipende dalla partizione oem . (Utilizza la partizione oem solo quando viene trovato un file specifico).
  • Utilizza solo l'API pubblica sulla partizione di system .
product
  • Aggiornabile
  • Accoppiato con l'immagine del sistema (si aggiornano insieme)
  • Costruito per prodotto o famiglie di prodotti.
  • La partizione di sistema può dipendere dalla partizione del product .
  • Può utilizzare API non pubbliche poiché vengono aggiornate contemporaneamente.
product (interfacce applicate)
  • Aggiornabile
  • Disaccoppiato con l'immagine di sistema.
  • Costruito per prodotto o famiglie di prodotti.
  • La partizione di system non dipende dalla partizione del product .
  • Non è possibile utilizzare API nascoste, ma utilizza solo API pubbliche e di sistema sulla partizione di system .

Per questi motivi, Android 9 supporta la partizione del product pur mantenendo il supporto per la partizione oem legacy, per i dispositivi che dipendono da essa. Per disaccoppiare la partizione del product dalla partizione di system , Android 11 supporta l' applicazione delle interfacce del product .

/ componenti del prodotto

La partizione del product contiene i seguenti componenti:

  • Proprietà di sistema specifiche del prodotto ( /product/build.prop )
  • RRO specifici del prodotto ( /product/overlay/*.apk )
  • App specifiche del prodotto ( /product/app/*.apk )
  • App /product/priv-app/*.apk specifiche del prodotto ( /product/priv-app/*.apk )
  • Librerie specifiche del /product/lib/* ( /product/lib/* )
  • Librerie java specifiche del prodotto ( /product/framework/*.jar )
  • Configurazioni del sistema Android Framework specifiche del /product/etc/sysconfig/* ( /product/etc/sysconfig/* e /product/etc/permissions/* )
  • File multimediali specifici del /product/media/audio/* ( /product/media/audio/* )
  • File di bootanimation specifici del prodotto

Nessuna immagine_personalizzata

Non puoi usare custom_images . Mancano di supporto per quanto segue:

  • Installazione di moduli in una destinazione specifica . custom_images supporta la copia di artefatti in un'immagine ma non può installare un modulo in una partizione specifica specificando la sua partizione di destinazione come parte di una regola di compilazione.
  • Soong supporto . custom_images non può essere creato utilizzando il sistema di compilazione Soong.
  • Supporto per l'aggiornamento OTA . custom_images vengono utilizzate come immagini ROM di fabbrica che non possono ricevere aggiornamenti OTA.

Mantenimento degli ABI tra le partizioni

La partizione del product in Android 9 è un'estensione della partizione di system . C'è un ABI debole tra product partizioni del product e del system , quindi entrambe devono essere aggiornate contemporaneamente e l'ABI dovrebbe essere basato sull'SDK di sistema. Se l'SDK di sistema non copre tutte le superfici API tra product e system , gli OEM devono mantenere i propri ABI tra le due partizioni.

Le partizioni del product e del system possono dipendere l'una dall'altra. Tuttavia, i test con Generic System Image (GSI) devono funzionare correttamente senza la partizione del product .

Quando vengono applicate le interfacce del product , la partizione del product viene disaccoppiata dalla partizione di system . La partizione del product utilizza solo le interfacce consentite dalla partizione di system .

La partizione del product non deve avere alcuna dipendenza dalla partizione del vendor . È vietata l'interazione diretta tra il product e le partizioni del vendor . (Questo è applicato da SEpolicy.)

Implementazione di partizioni di prodotto

Prima di implementare una nuova partizione del prodotto, esaminare le relative modifiche alla partizione del prodotto in AOSP . Quindi, per impostare il product , includi i seguenti flag di scheda o build del prodotto:

  • 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 $(call inherit-product path/to/device.mk) , come in PRODUCT_PRODUCT_PROPERTIES += product.abc=ok .

Installazione di un modulo nella partizione del prodotto

Utilizzare i seguenti flag di build per installare un modulo nella partizione del product .

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

Abilitazione dell'avvio verificato

Per evitare che la partizione del product venga manomessa da software dannoso, abilitare Android Verified Boot (AVB) per quella partizione (proprio come si fa per il vendor e system partizioni di system ). Per abilitare AVB, includi i seguenti flag di build: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS .