Durante lo sviluppo e il rilascio di nuovi dispositivi, i fornitori possono definire e dichiarare la versione FCM di destinazione nel file manifest del dispositivo (DM). Quando eseguono l'upgrade dell'immagine del fornitore per i vecchi dispositivi, i fornitori possono scegliere di implementare nuove versioni HAL e incrementare la versione FCM di destinazione.
Sviluppare nuovi dispositivi
Quando definisci la versione FCM target del dispositivo per i nuovi dispositivi:
- Lascia
DEVICE_MANIFEST_FILE
ePRODUCT_ENFORCE_VINTF_MANIFEST
non definiti. - Implementa gli HAL per la versione FCM target.
- Scrivi il file manifest del dispositivo corretto.
- Scrivi la versione FCM di destinazione nel file manifest del dispositivo.
- Imposta
DEVICE_MANIFEST_FILE
. - Imposta
PRODUCT_ENFORCE_VINTF_MANIFEST
sutrue
.
Lanciare nuovi dispositivi
Quando viene rilasciato un nuovo dispositivo, la relativa versione FCM di destinazione iniziale deve essere determinata e dichiarata nel file manifest del dispositivo come attributo "target-level
" nell'elemento <manifest>
di primo livello.
Ad esempio, i dispositivi lanciati con Android 9 devono avere la versione FCM di destinazione pari a 3 (la versione più recente disponibile al momento). Per dichiararlo nel file manifest del dispositivo:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Eseguire l'upgrade dell'immagine del fornitore
Quando eseguono l'upgrade dell'immagine del fornitore per un vecchio dispositivo, i fornitori possono scegliere di implementare nuove versioni HAL e aumentare la versione FCM di destinazione.
Eseguire l'upgrade degli HAL
Durante l'upgrade dell'immagine del fornitore, i fornitori possono implementare nuove versioni HAL a condizione che il nome HAL, il nome dell'interfaccia e il nome dell'istanza siano gli stessi. Per esempio:
- Dispositivi Google Pixel 2 e Pixel 2 XL rilasciati con la versione FCM di destinazione 2, che ha implementato l'HAL audio 2.0 richiesto
android.hardware.audio@2.0::IDeviceFactory/default
. - Per l'HAL audio 4.0 rilasciato con Android 9, i dispositivi Google Pixel 2 e Pixel 2 XL possono utilizzare un OTA completo per eseguire l'upgrade all'HAL 4.0, che implementa
android.hardware.audio@4.0::IDeviceFactory/default
. - Anche se
compatibility_matrix.2.xml
specifica solo audio 2.0, il requisito relativo a un'immagine del fornitore con la versione 2 di FCM di destinazione è stato allentato perché il framework Android 9 (versione 3 di FCM) considera l'audio 4.0 una sostituzione dell'HAL audio 2.0 in termini di funzionalità.
In sintesi, dato che compatibility_matrix.2.xml
richiede audio 2.0 e compatibility_matrix.3.xml
richiede audio 4.0, i requisiti sono i seguenti:
Versione FCM (sistema) | Versione FCM di destinazione (fornitore) | Requisiti |
---|---|---|
2 (8.1) | 2 (8.1) | Audio 2.0 |
3 (9) | 2 (8.1) | Audio 2.0 o 4.0 |
3 (9) | 3 (9) | Audio 4.0 |
Esegui l'upgrade della versione FCM di destinazione
Durante l'upgrade dell'immagine del fornitore, i fornitori possono anche aumentare la versione FCM di destinazione per specificare la versione FCM di destinazione con cui può funzionare l'immagine del fornitore di cui è stato eseguito l'upgrade. Per eseguire l'upgrade alla versione FCM di destinazione di un dispositivo, i fornitori devono:
- Implementa tutte le nuove versioni HAL richieste per la versione FCM di destinazione.
- Modifica le versioni HAL nel file manifest del dispositivo.
- Modifica la versione FCM di destinazione nel file manifest del dispositivo.
- Rimuovi le versioni HAL deprecate.
Ad esempio, i dispositivi Google Pixel e Pixel XL sono stati lanciati con Android 7.0, pertanto la versione FCM di destinazione deve essere almeno precedente. Tuttavia, il file manifest del dispositivo dichiara la versione 2 di FCM di destinazione perché l'immagine del fornitore è stata aggiornata in conformità con compatibility_matrix.2.xml
:
<manifest version="1.0" type="device" target-level="2">
Se i fornitori non implementano tutte le nuove versioni HAL richieste o non rimuovono le versioni HAL ritirate, non è possibile eseguire l'upgrade alla versione FCM di destinazione.
Ad esempio, i dispositivi Google Pixel 2 e Pixel 2 XL hanno la versione 2 di FCM di destinazione.
Sebbene implementino alcuni HAL richiesti da
compatibility_matrix.3.xml
(ad esempio audio 4.0, salute 2.0 e così via),
non rimuovono android.hardware.radio.deprecated@1.0
, che è
ritrattato nella versione 3 di FCM (Android 9). Di conseguenza, su questi dispositivi non è possibile eseguire l'upgrade alla versione 3 di FCM.
Requisiti obbligatori del kernel durante l'OTA
Aggiornamento dei dispositivi da Android 9 o versioni precedenti
Sui dispositivi con Android 9 o versioni precedenti, assicurati che i seguenti CL siano selezionati manualmente:
Queste modifiche introducono il flag di compilazionePRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
e lasciano il flag non impostato per i dispositivi lanciati con Android 9 o versioni precedenti.
- Durante l'aggiornamento ad Android 10, i client OTA sui dispositivi con Android 9 o versioni precedenti non controllano correttamente i requisiti del kernel nel pacchetto OTA. Queste modifiche sono necessarie per rimuovere i requisiti del kernel dal pacchetto OTA generato.
-
Quando esegui l'aggiornamento ad Android 11, è facoltativo impostare il
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
flag di compilazione per verificare la compatibilità di VINTF quando viene generato il pacchetto di aggiornamento.
Per ulteriori informazioni su questo flag di compilazione, consulta Aggiornare i dispositivi da Android 10.
Aggiornamento dei dispositivi da Android 10
Android 10 introduce un nuovo flag di compilazione,
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
. Per i dispositivi avviati con Android 10, questo flag viene impostato automaticamente su true
. Quando il flag è impostato su
true
, uno script estrae la versione e le configurazioni del kernel dall'immagine del kernel installata.
- Quando esegui l'aggiornamento ad Android 10, il pacchetto di aggiornamento OTA contiene la versione e la configurazione del kernel. I client OTA sui dispositivi con Android 10 leggono queste informazioni per verificare la compatibilità.
- Durante l'aggiornamento ad Android 11, la generazione del pacchetto OTA legge la versione e la configurazione del kernel per verificare la compatibilità.
Se lo script non riesce a estrarre queste informazioni per l'immagine del kernel, esegui una delle seguenti operazioni:
- Modifica lo script per supportare il formato del kernel e dare il tuo contributo ad AOSP.
- Imposta
BOARD_KERNEL_VERSION
sulla versione del kernel eBOARD_KERNEL_CONFIG_FILE
sul percorso del file di configurazione del kernel compilato.config
. Entrambe le variabili devono essere aggiornate quando viene aggiornata l'immagine del kernel. - In alternativa, imposta
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
sufalse
per saltare la verifica dei requisiti del kernel. Questa operazione non è consigliata perché eventuali incompatibilità sono nascoste e vengono rilevate solo quando vengono eseguiti i test VTS dopo l'aggiornamento.
Puoi visualizzare il codice sorgente dello script di estrazione delle informazioni del kernel
extract_kernel.py
.