Processo di rilascio GKI (Generic Kernel Image)

Questo documento descrive le modalità di rilascio di GKI, incluse le release di emergenza settimanali, mensili e fuori banda. L'obiettivo di questo documento è fornire agli OEM delle linee guida su dove ritirare la GKI e sulla procedura per le correzioni di emergenza fuori banda. Gli OEM possono anche utilizzare la guida allo sviluppo GKI per saperne di più su come possono collaborare con il team del kernel Android per ottimizzare il kernel GKI per i loro prodotti.

Cadenza di rilascio GKI

GKI viene rilasciato ogni mese dopo il blocco del KMI.

Release di Android 13, 14 e 15 GKI

La tabella seguente è applicabile solo a android13-5.10, android13-5.15 e android14-6.1.

Build certificate mensili GKI Data limite per il check-in Data di completamento del precaricamento GKI Confermato?
Ottobre 14 ottobre 2022 31 ottobre 2022
Novembre 14 novembre 2022 30 novembre 2022
Dicembre 9 dicembre 2022 21 dicembre 2022
Gennaio 17 gennaio 2023 31 gennaio 2023
Febbraio 15 febbraio 2023 28 febbraio 2023
Marzo 15 marzo 2023 31 marzo 2023
Aprile 13 aprile 2023 28 aprile 2023
Maggio 17 maggio 2023 31 maggio 2023
Giugno 15 giugno 2023 30 giugno 2023
Luglio 18 luglio 2023 31 luglio 2023
Agosto 16 agosto 2023 31 agosto 2023
Settembre 14 settembre 2023 29 settembre 2023
Ottobre 18 ottobre 2023 31 ottobre 2023
Novembre 10 novembre 2023 30 novembre 2023
Dicembre 7 dicembre 2023 22 dicembre 2023
Gennaio 16 gennaio 2024 31 gennaio 2024
Febbraio 13 febbraio 2024 29 febbraio 2024
Marzo 13 marzo 2024 29 marzo 2024
Aprile 16 aprile 2024 30 aprile 2024
Maggio 14 maggio 2024 31 maggio 2024
Giugno 12 giugno 2024 28 giugno 2024
Luglio 16 luglio 2024 31 luglio 2024
Agosto 15 agosto 2024 30 agosto 2024
Settembre 17 settembre 2024 30 settembre 2024
Ottobre 15 ottobre 2024 31 ottobre 2024
Novembre 11 novembre 2024 27 novembre 2024
Dicembre 6 dicembre 2024 23 dicembre 2024

A partire da gennaio 2024, riprenderemo le release mensili di android14-5.15 in conformità con la cadenza mensile specificata nella tabella di seguito. android15-6.6 seguirà la stessa cadenza di rilascio, a partire da luglio 2024.

Build certificate mensili GKI Data limite per il check-in Data di completamento del precaricamento GKI Confermato?
Gennaio 16 gennaio 2024 31 gennaio 2024
Febbraio 13 febbraio 2024 29 febbraio 2024
Marzo 4 marzo 2024 15 marzo 2024
Aprile 1° aprile 2024 17 aprile 2024
Maggio 1° maggio 2024 17 maggio 2024
Giugno 3 giugno 2024 17 giugno 2024
Luglio 1 luglio 2024 15 luglio 2024
Agosto 1° agosto 2024 16 agosto 2024
Settembre 2 settembre 2024 16 settembre 2024
Ottobre 1° ottobre 2024 14 ottobre 2024
Novembre 1° novembre 2024 15 novembre 2024
Dicembre 2 dicembre 2024 16 dicembre 2024

Release GKI di Android 12

Dopo maggio 2024, le release di GKI android12-5.10 vengono pubblicate con una cadenza trimestrale e vengono pubblicate a metà mese. La seguente tabella è applicabile solo a android12-5.10.

Build certificate mensili GKI Data limite per il check-in Data di completamento del precaricamento GKI Confermato?
Luglio 3 luglio 2023 14 luglio 2023
Settembre 1° settembre 2023 15 settembre 2023
Novembre 3 novembre 2023 17 Novembre 2023
Gennaio 5 gennaio 2024 19 gennaio 2024
Marzo 4 marzo 2024 15 marzo 2024
Maggio 1° maggio 2024 17 maggio 2024
Agosto 1° agosto 2024 16 agosto 2024
Novembre 1° novembre 2024 15 novembre 2024
Febbraio 3 febbraio 2025 17 febbraio 2025

Validità della build GKI per gli OEM

Gli OEM possono utilizzare una GKI di Android rilasciata di recente. Gli OEM possono lanciare build con certificazione GKI purché siano conformi ai requisiti LTS nel Bollettino sulla sicurezza di Android (ASB).

Release di sviluppo settimanali

Le uscite vengono testate con seppie per verificare che superino un livello di qualità minimo.

I file binari GKI sono disponibili per il self-service su ci.android.com man mano che le modifiche vengono unite. Le build settimanali non saranno certificate, ma possono essere utilizzate come base per sviluppo e test. Le build settimanali non possono essere usate per le build di dispositivi di produzione per gli utenti finali.

Release certificate mensili

Le release mensili di GKI contengono un elemento boot.img testato che include un certificato inserito da Google per attestare che i file binari sono stati creati da una base di codice sorgente nota.

Ogni mese, viene selezionato un candidato per la release mensile GKI (non certificato) dopo la data limite per il check-in, che in genere corrisponde alla seconda build settimanale del mese. Una volta selezionato il candidato per la release mensile, non saranno accettate nuove modifiche per l'uscita di quel mese. Durante il periodo di chiusura, è possibile risolvere solo le correzioni dei bug che causano errori di test. La candidata alla release viene sottoposta a controlli di qualità, come descritto nella sezione di idoneità GKI, per garantire che i test di conformità superino la build GSI+GKI con un dispositivo di riferimento e seppie.

Cronologia della cadenza di rilascio di GKI Figura 1. Cronologia di rilascio GKI

Procedura di Respin di emergenza

Un respin è il processo di recupero, ricreazione, test e ricertificazione di un programma binario dopo una release pubblica del kernel GKI. Puoi richiedere il respin di un programma binario certificato per una delle seguenti circostanze:

  • Per aggiornare un elenco di simboli.
  • Per applicare una correzione a un bug, inclusi quelli rilevati durante l'approvazione del lab dell'operatore.
  • Aggiungere un gancio del fornitore.
  • Per applicare una patch a una funzionalità esistente.
  • Per applicare una patch di sicurezza (dopo 6 mesi).

Le patch di sicurezza vengono unite automaticamente in un ramo di release per un massimo di 6 mesi dopo il rilascio del ramo. Dopo il limite di 6 mesi, devi richiedere il respin per applicare le patch di sicurezza a un ramo.

Prima di richiedere un nuovo movimento, tieni presente le seguenti linee guida:

  • I respin sono consentiti solo nei rami di release dopo il lancio di una release pubblica iniziale di una build mensile.

  • Le richieste di Respin vengono accettate solo per un determinato ramo di release per un massimo di sei mesi dopo la release pubblica iniziale. Dopo sei mesi, i rami possono ricevere il respin solo per le patch di sicurezza citate nel Bollettino sulla sicurezza di Android.

  • Quando i requisiti LTS, definiti dal Bollettino sulla sicurezza Android (ASB), causano la non conformità del ramo, questo viene deprecato. Le richieste di ripetizione per i rami deprecati non sono accettate. La data di ritiro per un determinato ramo di release GKI è inclusa nelle note mensili sulla build della release GKI in Release. Per la pianificazione futura, i requisiti LTS vengono aggiornati con cadenza annuale a maggio e novembre. Ad esempio, la filiale android12-5.10-2023-07 (5.10.177) non è supportata per i respin dopo il 1° maggio 2024 perché la filiale android12-5.10-2023-07 (5.10.177) non è conforme ai requisiti LTS di ASB-2024-05.

  • I respin sono validi solo per correzioni di bug urgenti, aggiornamenti dell'elenco di simboli o per applicare una patch per correggere una funzionalità esistente.

  • Tutte le patch inserite nel ramo di rilascio mensile devono essere già unite nel ramo di sviluppo GKI principale. Ad esempio, se è necessaria una patch per un respin di android12-5.10-2022-09, deve essere già unita in android12-5.10.

  • Devi scegliere le patch dal ramo di sviluppo GKI principale e caricarle nel ramo di rilascio mensile.

  • Nella richiesta di respin, devi assegnare una priorità (urgenza) alla richiesta. Questa priorità consente al team GKI di assistere meglio i partner in modo tempestivo. Per le richieste critiche o urgenti, contrassegna la priorità come P0. Per le richieste P0 e P1, devi anche giustificare l'urgenza. La tabella seguente fornisce una mappatura della priorità dei bug e del tempo di risoluzione (ESRT):

    Priorità ESRT
    P0 Due giorni lavorativi
    P1 5 giorni lavorativi
    P2 10 giorni lavorativi
    P3 15 giorni lavorativi
  • Devi inviare una richiesta di respin separata per ramo di release. Ad esempio, se è necessario un respin sia per android12-5.10-2022-08 che per android12-5.10-2022-09, devi creare due richieste respin.

  • Dopo che hai fornito una build e una richiesta respin viene contrassegnata come corretta, non devi riaprire la richiesta respin per aggiungere altre CL. Devi inviare una nuova richiesta respin se devi unire altre patch.

  • Per ogni CL da considerare, aggiungi i seguenti tag. L'avanzamento della richiesta di respin viene bloccato senza queste informazioni.

    • Bug: l'ID bug deve essere aggiunto al messaggio di commit per ogni CL.
    • Change-Id: deve essere identico al Change-Id della modifica del ramo di base.
  • Se una richiesta di respin richiede la tua risposta e non rispondi entro tre giorni lavorativi, la priorità viene ridotta di un livello (ad esempio, P0 viene ridotto a P1). Se non rispondi entro due settimane, il bug verrà contrassegnato come Non risolvibile (obsoleto).

Inviare una richiesta di respin

Il seguente diagramma mostra la procedura di respin. La procedura inizia quando il partner OEM (tu) invia la richiesta di respin.

Procedura di Respin di emergenza Figura 2. La procedura di respin

Per avviare la procedura di respin:

  1. Compila il modulo di richiesta GKI Respin e contatta immediatamente il tuo Technical Account Manager Google. Questo modulo crea un bug relativo alla richiesta di respin GKI. I bug delle richieste Respin sono visibili a te (il richiedente), al team GKI e alle persone specifiche che aggiungi all'elenco Cc del bug.
    • Se hai già una correzione, la richiesta deve indirizzare all'invio della patch in AOSP, in modo che Google possa esaminarla. Se non è possibile inviare una patch, quest'ultima deve essere allegata alla richiesta come file di testo.
    • Se non hai una correzione, la richiesta deve contenere quante più informazioni possibile, tra cui il numero di versione del kernel e i log, in modo che Google possa aiutarti a eseguire il debug del problema.
  2. Il team GKI di Google esamina la richiesta e la approva o te la assegna se sono necessarie ulteriori informazioni.
  3. Una volta concordata una correzione, il team GKI di Google esamina il codice (CR+2) della modifica. La revisione inizia il periodo di tempo ESRT. Il team GKI unisce, crea, testa la regressione e certifica la modifica.
  4. Il programma binario viene rilasciato su ci.android.com. Il periodo di tempo ESRT termina e il team GKI di Google contrassegna la richiesta come corretta e fa riferimento alla build respin. La build respin viene pubblicata anche nella pagina delle build di release del kernel generico (GKI).

Qualifiche GKI

Tipi di build GKI Applicazione della qualità Notes
Ogni settimana Test delle seppie
  • Avvio
  • Sottoinsieme di VTS
  • Sottoinsieme di CTS
  • Non certificato. Solo per test e
    dispositivo visualizzato.
  • Non può essere utilizzata per avviare i dispositivi.
Mensile (con certificazione) Test delle seppie
  • Avvio
  • VTT
  • CTS
Test dell'hardware di riferimento
  • Avvio
  • VTT
  • CTS
Respins (certificati) Test delle seppie
  • Avvio
  • VTT
  • Sottoinsieme di CTS
Test dei dispositivi di riferimento
  • Avvio
  • VTT
  • Si basa su una build certificata GKI.
  • La build viene certificata dopo la qualifica.

Dove trovare gli artefatti della build

Gli artefatti di tutte le release possono essere ottenuti su ci.android.com.

Puoi trovare ulteriori informazioni sull'integrazione continua, inclusi i risultati dei test, nella dashboard Integrazione continua di Android.

Domande frequenti

È possibile creare un nuovo programma binario GKI basato su una GKI già rilasciata?

Sì, è un respin. Il processo di respin è supportato purché la build GKI rilasciata (per la quale è richiesto il respin) sia conforme ai requisiti LTS nel Bollettino sulla sicurezza Android (ASB).

È possibile riprodurre binari GKI?

Sì, fai riferimento all'esempio riportato di seguito.

GKI 2.0
5.10 kernel prebuilts from build 7364300
https://ci.android.com/builds/submitted/7364300/kernel_aarch64/latest

Per riprodurre l'esempio, scarica manifest_$id.xml ed esegui questo comando:

repo init -u https://android.googlesource.com/kernel/manifest
mv manifest_7364300.xml .repo/manifests
repo init -m manifest_7364300.xml --depth=1
repo sync
# build the GKI images
# You may want to use LTO=thin to build faster for development
BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
# (optional) build virtual platform modules
BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device.aarch64 build/build.sh

Puoi recuperare la copia dell'artefatto GKI da out/.../dist.

Il programma binario GKI (compresa la patch di rotazione di emergenza) è stato costruito sul codebase più recente?

No. I Respin contengono solo patch che si trovano sopra i kernel certificati mensili che sono stati scelti. Questi respin contengono tutte le correzioni di bug di blocco del lancio segnalate fino a un determinato momento dagli OEM utilizzando la corrispondente release mensile di base. Guarda l'esempio che segue di come accade questo tipo di scenario.

  • OEM1 e OEM2 decidono di utilizzare la release binaria GKI a partire da novembre 2021.
  • OEM1 e OEM2 rilevano problemi che richiedono patch per l'assistenza. Queste patch possono essere diverse o uguali.
  • I respin sopra il programma binario di novembre 2021 presentano correzioni relative al blocco dell'avvio segnalate sia da OEM1 che da OEM2 durante la finestra di reso, ma niente di più.
  • I problemi menzionati nel secondo punto dell'elenco sono inclusi anche nelle successive release mensili di GKI.

Per il respin di ottobre sono incluse tutte le patch inviate dagli OEM, ma sono interessate da altre patch OEM, poiché non sono state testate in modo specifico con i nostri prodotti. È possibile includere solo la nostra patch?

Ciò non è possibile. Un percorso respin "per OEM" al momento non è scalabile. Al contrario, il team GKI esamina ogni singola modifica apportata alle build di respin e testa le modifiche con tutto l'hardware disponibile prima di creare una nuova build. Se rileva che il problema riguarda in modo specifico un OEM/dispositivo/modello, il team GKI può garantire che il codice aggiunto dalla modifica venga eseguito solo sul dispositivo/modello/SKU interessato.

Il vantaggio principale dei respin unificati è che ogni dispositivo che utilizza la stessa base di release si trae vantaggio l'uno dall'altro, soprattutto se i bug rilevati sono generici e applicabili a tutti gli utenti. I bug core del kernel trovati nei test degli operatori sono un esempio specifico di questo concetto.

Ci sono situazioni in cui Google fornisce informazioni specifiche sulle patch degli OEM e sugli scenari di problemi, in modo che gli OEM possano valutare l'impatto e il rischio dell'implementazione delle patch con i loro prodotti?

Google non aggiunge alcuna modifica a una build di respin finché il problema non viene compreso e non sono stati raccolti tutti i dettagli. come vedi nel log delle modifiche (messaggio di commit). Google non rivela quale dispositivo specifico è interessato, ma gli OEM possono sempre trovare la descrizione del problema e la soluzione nel log delle modifiche.