Livello API del fornitore

Il livello API fornitore si riferisce alla versione dell'interfaccia supportata dalla partizione fornitore. L'interfaccia è bidirezionale: descrive l'API che la partizione del fornitore fornisce alla partizione di sistema (l'interfaccia HAL o hardware abstraction layer) e anche l'API che la partizione del fornitore richiede dalla partizione di sistema (l'interfaccia LLNDK o low-level native developers kit).

Il livello dell'API del fornitore viene utilizzato anche per determinare i requisiti software del fornitore (VSR), ovvero una raccolta di requisiti funzionali e non funzionali che il software nella partizione del fornitore deve soddisfare.

Il resto di questa pagina spiega come vengono utilizzate le proprietà di sistema, a seconda della versione di Android, per determinare il livello API del fornitore.

Blocco del fornitore

Android consente a un fornitore di bloccare la partizione fornitore a una versione specifica del VSR. Il set di funzionalità che Android si aspetta dalla partizione del fornitore è determinato dal livello API del fornitore associato alla partizione del fornitore. In fase di runtime, il comportamento del software in esecuzione nella partizione di sistema si adatta per tenere conto del livello API fornitore della partizione fornitore. Ad esempio, il software nella partizione di sistema potrebbe non utilizzare nuove funzionalità se non sono supportate dal livello API della partizione del fornitore.

Il blocco del fornitore è disponibile solo se stai creando un dispositivo compatibile con Android.

Determinare il livello API del fornitore (Android 14-QPR3 e versioni successive)

Per Android 14-QPR3 e versioni successive, il livello API fornitore viene rilasciato separatamente, il che significa che il livello API SDK e il livello API fornitore non sono sincronizzati.

A causa delle pianificazioni di rilascio separate, per Android 14-QPR3 e versioni successive, il livello API fornitore è completamente disaccoppiato dal livello API SDK. Per garantire che questo disaccoppiamento sia chiaro, il formato del livello API del fornitore è una data formattata come AAAAMM (anno e mese), mentre il livello dell'SDK è un numero intero.

Android 14-QPR3 e versioni successive contengono le seguenti proprietà di sistema relative al livello API fornitore:

Proprietà di sistema Formato Descrizione Impostazione iniziale
ro.board.api_level AAAAMM Il livello API del fornitore supportato dal software di un chipset. Questa proprietà è impostata per tutti i chipset. Questo valore viene impostato automaticamente dal sistema di compilazione.
ro.board.first_api_level AAAAMM Il livello API del fornitore con cui è stato rilasciato per la prima volta il software di un chipset. Questa proprietà è una funzione del chipset e viene impostata dai fornitori di SoC se il chipset SoC è qualificato per il blocco del fornitore. Dopo l'impostazione iniziale, non deve essere modificato. I fornitori di SoC impostano questa impostazione utilizzando BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level Numero intero Il livello API dell'SDK con cui viene inizialmente avviato il dispositivo. Questa proprietà viene impostata dall'OEM e non viene mai aggiornata, nemmeno dopo gli upgrade del sistema operativo.
ro.vendor.api_level AAAAMM Il livello API del fornitore corrispondente a ro.product.first_api_level. Impostiamo ro.vendor.api_level sul valore di ro.board.api_level quando ro.board.api_level è inferiore al livello API del fornitore di ro.product.first_api_level solo se il chipset SoC è qualificato per il blocco del fornitore. Descritto dopo questa tabella.
ro.board.api_frozen booleano Questa proprietà è impostata su true se il livello API del fornitore rappresentato da ro.board.api_level è finalizzato. Se questa proprietà non è impostata, il valore predefinito è false.
ro.llndk.api_level AAAAMM Il livello API fornitore del formato AAAA-MM fornito dall'attuale LLNDK nella partizione di sistema. L'LLNDK è compatibile con le versioni precedenti, quindi qualsiasi immagine fornitore con un livello API inferiore o uguale a questo può essere caricata con questa immagine di sistema. Questa proprietà è impostata nella partizione di sistema.

La proprietà ro.vendor.api_level viene derivata in uno dei due modi seguenti:

  • Se il chipset è stato qualificato per il blocco del fornitore:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • Se il chipset non è in fase di blocco del fornitore:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

Il metodo AVendorSupport_getVendorApiLevelOf() determina il livello API fornitore corrispondente da un livello API SDK. Ad esempio, AVendorSupport_getVendorApiLevelOf(35), dove 35 è il livello API dell'SDK della principale release di Android nel 2024 restituisce 202404, ovvero la data approssimativa di Android 14-QPR3 quando è stato impostato il livello API fornitore corrente.

Determinare il livello API del fornitore (Android 13)

Il livello API del fornitore segue il livello API dell'SDK, che riguarda l'interfaccia app-sistema operativo e viene aggiornato una volta all'anno quando la nuova piattaforma Android viene rilasciata su AOSP.

Android 13 contiene le seguenti proprietà di sistema relative al livello API fornitore:

Proprietà di sistema Formato Descrizione Impostazione iniziale
ro.board.first_api_level Numero intero Il livello API del fornitore con cui è stato rilasciato per la prima volta il software di un chipset. Questa è una funzione solo del chipset e non può essere modificata dai fornitori di SoC o dagli OEM. Questa proprietà è impostata solo per i chipset che soddisfano i requisiti per il blocco del fornitore Il valore viene stabilito impostando BOARD_SHIPPING_API_LEVEL nel file device.mk.
ro.board.api_level Numero intero Il livello API del fornitore supportato dal software di un chipset. Questa proprietà è impostata solo per i chipset idonei al blocco del fornitore. Inizialmente, il valore di questa proprietà viene impostato dal sistema di compilazione sullo stesso valore di ro.board.first_api_level, ma può essere aggiornato se la partizione del fornitore viene aggiornata.
ro.product.first_api_level Numero intero Il livello API dell'SDK con cui viene inizialmente avviato il dispositivo. Questa proprietà viene impostata dall'OEM e non viene mai aggiornata, nemmeno dopo gli upgrade del sistema operativo.
ro.vendor.api_level Numero intero Come la descrizione del livello API del fornitore nella tabella precedente.
ro.vndk.version Numero intero La versione di VNDK rispetto alla quale è stata creata la partizione del fornitore. Questa proprietà è impostata nella partizione del fornitore.
ro.vendor.build.version.sdk Numero intero Il livello API SDK dell'albero delle origini in cui è stata creata la partizione del fornitore.