Sviluppo manifesto del dispositivo,Sviluppo manifesto del dispositivo

Durante lo sviluppo e il rilascio di nuovi dispositivi, i fornitori possono definire e dichiarare la versione FCM target 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:

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

Rilascio di nuovi dispositivi

Quando viene rilasciato un nuovo dispositivo, la sua versione FCM target iniziale deve essere determinata e dichiarata nel manifesto del dispositivo come attributo " target-level " nell'elemento <manifest> di livello superiore.

Ad esempio, i dispositivi che si avviano con Android 9 devono avere la versione Target FCM pari a 3 (la versione superiore disponibile al 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 l'aggiornamento dell'immagine del fornitore, i fornitori possono implementare nuove versioni dell'HAL a condizione che il nome dell'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 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'aggiornamento all'HAL 4.0, che implementa android.hardware.audio@4.0::IDeviceFactory/default .
  • Anche se compatibility_matrix.2.xml specifica solo l'audio 2.0, il requisito sull'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 target

Durante l'aggiornamento dell'immagine del fornitore, i fornitori possono anche incrementare la versione FCM di destinazione per specificare la versione FCM di destinazione con cui può funzionare l'immagine del fornitore aggiornata. Per aumentare la versione FCM target di un dispositivo, i fornitori devono:

  1. Implementare tutte le nuove versioni HAL richieste per la versione FCM di destinazione.
  2. Modifica le versioni HAL nel file manifest del dispositivo.
  3. Modificare la versione FCM di destinazione nel file manifest del dispositivo.
  4. Rimuovere le versioni HAL deprecate.

Ad esempio, i dispositivi Google Pixel e Pixel XL sono stati lanciati con Android 7.0, quindi la versione FCM target deve essere almeno legacy. Tuttavia, il manifest del dispositivo dichiara Target FCM versione 2 perché l'immagine del fornitore è stata aggiornata per conformarsi 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, ecc.), non rimuovono android.hardware.radio.deprecated@1.0 , che è deprecato nella versione 3 di FCM (Android 9). Pertanto, questi dispositivi non possono aggiornare la versione FCM target alla 3.

Obbligo dei requisiti 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 scelti con cura:

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.

  • Durante l'aggiornamento ad Android 10, i client OTA sui dispositivi che eseguono 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.
  • Durante 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, vedere 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.

  • 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, esegui una delle seguenti operazioni:

  • Modifica lo script per supportare il formato del kernel e contribuire ad AOSP.
  • Imposta BOARD_KERNEL_VERSION sulla versione del kernel e BOARD_KERNEL_CONFIG_FILE sul 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_REQUIREMENTS su false per ignorare il controllo dei requisiti del kernel. Questo non è consigliato perché qualsiasi incompatibilità è nascosta e viene scoperta solo durante l'esecuzione dei test VTS dopo l'aggiornamento.

È possibile visualizzare il codice sorgente dello script di estrazione delle informazioni del extract_kernel.py .