Quando sviluppano e rilasciano nuovi dispositivi, i fornitori possono definire e dichiarare la versione FCM di destinazione nel manifest del dispositivo (DM). Quando aggiornano l'immagine del fornitore per i dispositivi meno recenti, i fornitori possono scegliere di implementare nuove versioni HAL e incrementare la versione FCM di destinazione.
Sviluppare nuovi dispositivi
Quando definisci la versione FCM di destinazione del dispositivo per i nuovi dispositivi:
- Lascia
DEVICE_MANIFEST_FILEePRODUCT_ENFORCE_VINTF_MANIFESTnon definiti. - Implementa 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.
- Imposta
DEVICE_MANIFEST_FILE. - Imposta
PRODUCT_ENFORCE_VINTF_MANIFESTsutrue.
Rilasciare nuovi dispositivi
Quando viene rilasciato un nuovo dispositivo, la sua versione FCM target iniziale deve essere
determinata e dichiarata nel 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 uguale a 3 (la versione più recente disponibile al momento). Per dichiarare questa funzionalità nel manifest del dispositivo:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Esegui l'upgrade dell'immagine del fornitore
Quando aggiornano l'immagine del fornitore per un dispositivo precedente, i fornitori possono scegliere di implementare nuove versioni HAL e incrementare la versione FCM di destinazione.
Esegui l'upgrade degli HAL
Durante l'upgrade di un'immagine 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:
- I dispositivi Google Pixel 2 e Pixel 2 XL sono stati rilasciati con la versione FCM di destinazione
2, che implementava 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.xmlspecifica solo audio 2.0, il requisito relativo a un'immagine fornitore con versione FCM di destinazione 2 è stato allentato perché il framework Android 9 (versione FCM 3) considera audio 4.0 una sostituzione di 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 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 di un'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:
- 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, quindi la versione FCM di destinazione deve essere almeno legacy. Tuttavia, il manifest
del dispositivo dichiara la versione 2 di FCM 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 obsolete, non è possibile eseguire l'upgrade della versione FCM di destinazione.
Ad esempio, i dispositivi Google Pixel 2 e Pixel 2 XL hanno come target la versione 2 di FCM.
Sebbene implementino alcune HAL richieste 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 nella versione 3 di FCM (Android 9). Pertanto, questi
dispositivi non possono eseguire l'upgrade della versione di destinazione di FCM alla versione 3.
Imposizione dei requisiti del kernel durante l'aggiornamento OTA
Aggiornamento dei dispositivi da Android 9 o versioni precedenti
Sui dispositivi con Android 9 o versioni precedenti, assicurati che le seguenti CL siano cherry-picked:
Queste modifiche introducono il flag di build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS e lasciano il flag
non impostato per i dispositivi lanciati con Android 9 o
versioni precedenti.
- Quando esegui 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 eliminare i requisiti del kernel dal pacchetto OTA generato.
-
Quando esegui l'aggiornamento ad Android 11, è facoltativo impostare il flag di build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSper verificare la compatibilità VINTF durante la generazione del 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
lanciati 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.
- 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à.
- Quando esegui l'aggiornamento ad Android 11, la generazione del pacchetto OTA legge la versione e la configurazione del kernel per verificarne 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 contribuisci ad AOSP.
- Imposta
BOARD_KERNEL_VERSIONsulla versione del kernel eBOARD_KERNEL_CONFIG_FILEsul percorso del file di configurazione del kernel creato.config. Entrambe le variabili devono essere aggiornate quando viene aggiornata l'immagine del kernel. - In alternativa, imposta
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSsufalseper saltare il controllo dei requisiti del kernel. Questa operazione è sconsigliata perché qualsiasi incompatibilità è nascosta e viene rilevata solo durante l'esecuzione dei test VTS dopo l'aggiornamento.
Puoi visualizzare il codice sorgente dello script di estrazione delle informazioni del kernel
extract_kernel.py.