Durante lo sviluppo e il rilascio di nuovi dispositivi, i fornitori possono definire e dichiarare la versione FCM di destinazione nel manifest del dispositivo (DM). Quando si aggiorna l'immagine del fornitore per i vecchi dispositivi, i fornitori possono scegliere di implementare nuove versioni HAL e incrementare la versione FCM di destinazione.
Sviluppo di nuovi dispositivi
Quando si definisce la versione FCM di destinazione del dispositivo per i nuovi dispositivi:
- Lascia
DEVICE_MANIFEST_FILE
ePRODUCT_ENFORCE_VINTF_MANIFEST
non definiti. - Implementare gli HAL per la versione FCM di destinazione.
- Scrivi il file manifest del dispositivo corretto.
- Scrivi la versione FCM di destinazione nel file manifest del dispositivo.
- Impostare
DEVICE_MANIFEST_FILE
. - Impostare
PRODUCT_ENFORCE_VINTF_MANIFEST
sutrue
.
Rilascio di nuovi dispositivi
Quando viene rilasciato un nuovo dispositivo, la sua versione FCM di destinazione iniziale deve essere determinata e dichiarata nel manifest del dispositivo come attributo " target-level
" nell'elemento <manifest>
di livello superiore.
Ad esempio, i dispositivi che si avviano con Android 9 devono avere Target FCM Version uguale a 3 (la versione superiore disponibile in questo momento). Per dichiararlo nel manifest del dispositivo:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Aggiornamento dell'immagine del fornitore
Quando si aggiorna l'immagine del fornitore per un vecchio dispositivo, i fornitori possono scegliere di implementare nuove versioni HAL e incrementare la versione FCM di destinazione.
Aggiornamento degli HAL
Durante un aggiornamento 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 Target FCM versione 2, che ha implementato l'audio HAL 2.0 richiesto
android.hardware.audio@2.0::IDeviceFactory/default
. - Per l'audio 4.0 HAL rilasciato con Android 9, i dispositivi Google Pixel 2 e Pixel 2 XL possono utilizzare un'OTA completa per eseguire l'aggiornamento all'HAL 4.0, che implementa
android.hardware.audio@4.0::IDeviceFactory/default
. - Anche se la
compatibility_matrix.2.xml
specifica solo l'audio 2.0, il requisito su un'immagine del fornitore con Target FCM versione 2 è stato allentato perché il framework Android 9 (FCM versione 3) considera l'audio 4.0 una sostituzione dell'audio 2.0 HAL in termini di funzionalità .
Per riassumere, 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 target (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 |
Aggiornamento della versione FCM di destinazione
Durante un aggiornamento dell'immagine del fornitore, i fornitori possono anche incrementare la versione FCM di destinazione per specificare la versione FCM di destinazione con cui l'immagine del fornitore aggiornata può funzionare. Per aumentare la versione FCM di destinazione di un dispositivo, i fornitori devono:
- Implementare 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.
- Rimuovere le versioni HAL obsolete.
Ad esempio, i dispositivi Google Pixel e Pixel XL sono stati lanciati con Android 7.0, quindi la loro versione FCM di destinazione deve essere almeno legacy. Tuttavia, il manifest del dispositivo dichiara la versione 2 di FCM di destinazione perché l'immagine del fornitore è stata aggiornata per essere conforme a 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 deprecate, la versione FCM di destinazione non può essere aggiornata.
Ad esempio, i dispositivi Google Pixel 2 e Pixel 2 XL hanno Target FCM versione 2. Sebbene implementino alcuni HAL richiesti da compatibility_matrix.3.xml
(come audio 4.0, salute 2.0 e così via), non rimuovono android.hardware.radio.deprecated@1.0
, che è deprecato in FCM versione 3 (Android 9). Pertanto, questi dispositivi non possono aggiornare la versione FCM di destinazione alla 3.
Requisiti del kernel obbligatori 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:
Queste modifiche introducono il flag di build PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
e lasciano il flag non impostato per i dispositivi avviati con Android 9 o versioni precedenti.
- Durante l'aggiornamento ad Android 10, i client OTA su dispositivi con Android 9 o versioni precedenti non verificano correttamente i requisiti del kernel nel pacchetto OTA. Queste modifiche sono necessarie per eliminare i requisiti del kernel dal pacchetto OTA generato.
- Quando si esegue l'aggiornamento ad Android 11, è facoltativo impostare il flag di build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
per verificare la compatibilità VINTF quando viene generato il pacchetto di aggiornamento.
Per ulteriori informazioni su questo flag di build, vedi Aggiornamento dei dispositivi da Android 10 .
Aggiornamento dei dispositivi da Android 10
Android 10 introduce un nuovo flag di build, 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 del kernel e le configurazioni del kernel dall'immagine del kernel installata.
- Durante 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, eseguire una delle seguenti operazioni:
- Modifica lo script per supportare il formato del tuo kernel e contribuire ad AOSP.
- Impostare
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 il controllo dei requisiti del kernel. Questa operazione non è consigliata perché qualsiasi incompatibilità è nascosta e viene rilevata solo durante l'esecuzione di test VTS dopo l'aggiornamento.
È possibile visualizzare il codice sorgente dello script di estrazione delle informazioni del kernel extract_kernel.py
.