Partizioni di prodotti

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
  • Non aggiornabile; di solito ha lampeggiato una volta in fabbrica.
  • Realizzato per piccole variazioni, come branding e colore. Avere contenuti della partizione oem diversi non indicano che il prodotto software è diverso.
  • La partizione system non dipende da la partizione oem. (Utilizza lo standard oem solo quando viene trovato un file specifico).
  • Utilizza l'API pubblica solo sulla partizione system.
product
  • Aggiornabile
  • Abbinati all'immagine di sistema (si aggiornano insieme)
  • Creata in base alla famiglia di prodotti o di prodotti.
  • La partizione di sistema può dipendere dalla partizione product.
  • Possono usare API non pubbliche poiché vengono aggiornate contemporaneamente.
product (interfacce applicate)
  • Aggiornabile
  • Disaccoppiato con l'immagine di sistema.
  • Creata in base alla famiglia di prodotti o di prodotti.
  • La partizione system non dipende da product della partizione di testo.
  • Non può utilizzare le API nascoste, ma utilizza solo API pubbliche e di sistema sulla system partizione.

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 in PRODUCT_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 in Android.bp
  • LOCAL_PRODUCT_MODULE := true in Android.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.