Sviluppo del file manifest del dispositivo

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:

  1. Lascia DEVICE_MANIFEST_FILE e PRODUCT_ENFORCE_VINTF_MANIFEST non definiti.
  2. Implementa gli HAL per la versione FCM target.
  3. Scrivi il file manifest del dispositivo corretto.
  4. Scrivi la versione FCM di destinazione nel file manifest del dispositivo.
  5. Imposta DEVICE_MANIFEST_FILE.
  6. Imposta PRODUCT_ENFORCE_VINTF_MANIFEST su true.

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 richiestoandroid.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:

  1. Implementa tutte le nuove versioni HAL richieste per la versione FCM di destinazione.
  2. Modifica le versioni HAL nel file manifest del dispositivo.
  3. Modifica la versione FCM di destinazione nel file manifest del dispositivo.
  4. 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 e BOARD_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 su false 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.