Android 10 include il supporto per lo sviluppo
odm
partizioni utilizzando il sistema di build Android.
Informazioni sulle partizioni ODM
I produttori di design originali (ODM) personalizzano il fornitore SoC (System-on-Chip) board-support pack (BSP) ai loro dispositivi specifici (le loro schede). Questo consente di implementare moduli kernel per componenti specifici della scheda, daemon specifici per le board o le loro caratteristiche sui livelli di astrazione hardware (HAL). Potrebbe anche voler sostituire o personalizzare i componenti del SoC.
Nelle release precedenti di Android, queste personalizzazioni impedivano l'utilizzo di un singolo
dell'immagine del fornitore per i dispositivi dotati dello stesso SoC (o con SoC diversi,
stessa famiglia). In Android 10 e versioni successive, puoi utilizzare una
partizione odm
separata per le personalizzazioni, che ti consentono di
Utilizzare un'unica immagine del fornitore per più SKU hardware.
Utilizza partizioni del prodotto e ODM
Android 9 ha aggiunto il supporto della creazione
product
partizioni di sistema, consentendo l'utilizzo di un'unica immagine di sistema per più software
SKU forniti da immagini product.img
diverse. Mentre
La partizione product
è destinata agli SKU del software,
La partizione odm
è destinata agli SKU hardware.
Con le partizioni ODM e di prodotto dedicate, puoi utilizzare system
per ospitare il codice generico da condividere tra molti SKU software e
partizione vendor
per ospitare il codice BSP specifico del SoC da condividere tra
più dispositivi in base al SoC specificato.
L'uso di partizioni separate presenta degli svantaggi, come la difficoltà di gestione spazio su disco (ad esempio, devi riservare una quantità limitata di spazio per crescita). Tuttavia, Android 10 supporta partizioni dinamiche rimuove il problema del disco ed esegue il partizionamento di un dispositivo Possibile aggiornamento over-the-air (OTA).
Componenti ODM
La partizione odm
contiene i seguenti componenti specifici per ODM
(simile alla partizione vendor
), elencata nella tabella seguente.
Componente specifico per ODM | Posizione |
---|---|
Moduli kernel caricabili (LKM) | /odm/lib/modules/*.ko |
Librerie native | /odm/lib[64] |
HAL | /odm/lib[64]/hw |
Norme SE | /odm/etc/selinux |
Oggetto VINTF dati | /odm/etc/vintf |
init.rc
file |
/odm/etc/init |
Proprietà di sistema | /odm/build.prop |
Overlay di risorse di runtime (RRO) | /odm/overlay/*.apk |
App | /odm/app/*.apk |
App Priv | /odm/priv-app/*.apk |
Librerie Java | /odm/framework/*.jar |
Configurazioni di sistema Android Framework | /odm/etc/sysconfig/* e /odm/etc/permissions/* |
Nessuna immagine personalizzata
Non utilizzare personalizzato immagini perché non supportano:
- Installazione di un modulo in un target specifico. Le immagini personalizzate supportano la copia degli artefatti in un'immagine, ma non possono installare un modulo in una partizione specifica specificando la partizione di destinazione come parte di una regola di build.
- Ben fatto. Non è possibile creare
custom_images
utilizzando il sistema di compilazione soong. - Aggiornamento OTA. Le immagini personalizzate vengono utilizzate immagini ROM di fabbrica che non possono essere pubblicate tramite OTA.
Mantieni le ABI tra le partizioni
La partizione odm
è un'estensione di vendor
della partizione di testo. Quando valuti la stabilità dell'interfaccia binaria dell'applicazione (ABI), tieni
la seguente architettura.
Figura 1. Mantenimento dell'ABI tra le partizioni.
- Nessuna stabilità ABI tra
odm
evendor
partizioni. L'upgrade di entrambe le partizioni deve essere eseguito con lo stesso nel tempo. - Le partizioni
odm
evendor
possono dipendere ma la partizionevendor
deve funzionare senza una partizioneodm
. - L'ABI tra
odm
esystem
è uguale a l'ABI tra il giornovendor
e il giornosystem
.
Interazione diretta tra la partizione product
e la
La partizione vendor
o odm
non è
consentito. (questa operazione viene applicata da SEpolicy).
Implementare le partizioni ODM
Prima di implementare una nuova partizione, esamina il AOSP correlato modifiche.
Configura le partizioni ODM
Per configurare odm
partizioni, includi questi flag di build:
BOARD_ODMIMAGE_PARTITION_SIZE
per una dimensione di partizione fissaPRODUCT_USE_DYNAMIC_PARTITIONS
eBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
per un partizione dinamica dimensioni- Tipo di file system
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
utilizzato per Immagine ODM PRODUCT_ODM_PROPERTIES
per/odm/build.prop
per da utilizzare in$(call inherit-product path/to/device.mk)
, ad esempioPRODUCT_ODM_PROPERTIES += product.abc=ok
Installare un modulo su una partizione ODM
Usa questi flag di build per installare un modulo su una partizione odm
:
device_specific: true
inAndroid.bp
LOCAL_ODM_MODULE := true
inAndroid.mk
Abilita Avvio verificato
Per impedire a software dannoso di manomettere le partizioni di odm
,
attiva Avvio verificato di Android
(AVB) per queste partizioni (come fai per vendor
e
system
partizioni).
Per abilitare AVB, includi il flag di build
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
. Per maggiori dettagli sulla configurazione
AVB sulle partizioni dinamiche; vedi
Configurazione AVB
modifiche.
Considerare /odm come un'altra partizione /fornitore
Per assicurarti che il sistema gestisca la partizione odm
come
partizione vendor
, sostituisci eventuali vendor
hardcoded
con un set di partizioni orientate all'hardware (attualmente
odm
e vendor
). Rilevante vendor
posizioni di riferimento all'interno della piattaforma
dinamico
linker,
pacchetto
gestore e shell/libc
.