Livello API del fornitore

Il livello API del fornitore si riferisce alla versione dell'interfaccia supportata dal del fornitore. l'interfaccia è bidirezionale; descrive l'API che la partizione del fornitore fornisce alla partizione di sistema il livello di astrazione o l'interfaccia HAL), nonché l'API che il fornitore esegue tutte le richieste dalla partizione di sistema (il kit per sviluppatori nativi di basso livello LLNDK).

Viene utilizzato anche il livello API del fornitore per determinare i requisiti software del fornitore (VSR), ovvero un insieme di requisiti funzionali e non funzionali che che il software deve soddisfare nella partizione del fornitore.

Il resto di questa pagina spiega in che modo il sistema che vengono usate, a seconda della versione di Android, per determinare il fornitore di livello API.

Blocco dei fornitori

Android consente a un fornitore di bloccare la partizione del fornitore in una versione specifica di la VSR. L'insieme di funzionalità che Android si aspetta dalla partizione del fornitore è determinata dal il livello API del fornitore associato alla partizione del fornitore. In fase di runtime, il comportamento del software in esecuzione nella partizione di sistema si adegua del fornitore della partizione del fornitore. Ad esempio, il software la partizione di sistema potrebbe non esercitare nuove funzionalità se non sono supportate da il livello API della partizione del fornitore.

Il blocco del fornitore è disponibile solo se stai creando 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 del fornitore è rilasciati separatamente, ovvero a livello API dell'SDK e al fornitore I livelli API non sono sincronizzati.

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

Android 14-QPR3 e versioni successive contiene il seguente sistema proprietà relative al livello API del fornitore (ro.vendor.api_level):

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. 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 di solo chipset ed è impostata dai fornitori di SoC se il chipset SoC è idoneo per il blocco del fornitore. Dopo l'impostazione iniziale, non deve essere modificata. I fornitori di SoC configurano questa impostazione utilizzando BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level Numero intero Il livello API SDK con cui il dispositivo viene avviato inizialmente. Questa proprietà viene impostata dall'OEM e non viene mai aggiornata, anche dopo gli upgrade del sistema operativo.
ro.vendor.api_level AAAAMM Il livello API del fornitore a cui deve essere conforme il dispositivo nel suo complesso. Descrizione dopo questa tabella.
ro.board.api_frozen boolean 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 del fornitore nel formato AAAAMM fornito dall'LLNDK attuale nella partizione di sistema. L'LLNDK è compatibile con le versioni precedenti, pertanto qualsiasi immagine del fornitore di livello inferiore o uguale a questo livello API può essere inclusa in questa immagine di sistema. Questa proprietà è impostata dalla partizione di sistema.

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

  • Se il chipset è idoneo 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 è bloccato dal fornitore:

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

Il metodo AVendorSupport_getVendorApiLevelOf() determina la corrispondenza il livello API del fornitore da un livello API dell'SDK. Ad esempio: AVendorSupport_getVendorApiLevelOf(35), dove 35 è il livello API dell'SDK della principale release di Android nel 2024 restituisce 202404, che è la data approssimativa per Android 14-QPR3 quando l'attuale livello API del fornitore era per iniziare.

Determinare il livello API del fornitore (Android 13)

Il livello API del fornitore segue il livello API dell'SDK, che è relativo all'app-OS e viene aggiornato una volta all'anno, quando viene rilasciata la nuova piattaforma Android a AOSP.

Android 13 contiene il seguente sistema proprietà relative al livello API del fornitore (ro.vendor.api_level):

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 del solo chipset e non può essere modificata da fornitori di SoC o OEM. Questa proprietà è impostata solo per i chipset idonei al 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. Questa proprietà è impostata per tutti i chipset. 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 viene eseguito l'upgrade della partizione del fornitore.
ro.product.first_api_level Numero intero Il livello API SDK con cui il dispositivo viene avviato inizialmente. Questa proprietà viene impostata dall'OEM e non viene mai aggiornata, anche dopo gli upgrade del sistema operativo.
ro.vendor.api_level Numero intero Il livello API del fornitore a cui deve essere conforme il dispositivo nel suo complesso. Descrizione dopo questa tabella.
ro.vndk.version Numero intero La versione di VNDK su cui viene creata la partizione del fornitore. Questa proprietà è impostata dalla partizione di sistema.
ro.vendor.build.version.sdk Numero intero Il livello API SDK della struttura di origine in cui è stata creata la partizione del fornitore.
ro.vendor.build.version.release Numero intero La versione della piattaforma della struttura di origine in cui è stata creata la partizione del fornitore.
ro.vendor.build.version.release_or_codename Numero intero Il nome in codice della struttura di origine in cui è stata creata la partizione del fornitore.

La proprietà ro.vendor.api_level viene impostata automaticamente sul minimo di ro.board.api_level (o di ro.board.first_api_level se ro.board.api_level non è definito) e ro.product.first_api_level.