Il livello API del fornitore si riferisce alla versione dell'interfaccia supportata dalla partizione del fornitore. L'interfaccia è bidirezionale; descrive l'API che la partizione del fornitore fornisce alla partizione di sistema (il livello di astrazione hardware o l'interfaccia HAL) e anche l'API che la partizione del fornitore richiede dalla partizione di sistema (il kit di sviluppo per sviluppatori nativi di basso livello o l'interfaccia LLNDK).
Il livello dell'API del fornitore viene utilizzato anche per determinare i requisiti del software del fornitore (VSR), ovvero una raccolta di requisiti funzionali e non funzionali che il software nella partizione del fornitore deve soddisfare.
Nella parte rimanente di questa pagina viene spiegato come vengono utilizzate le proprietà di sistema, a seconda della versione di Android, per determinare il livello dell'API del fornitore.
Blocco del fornitore
Android consente a un fornitore di bloccare la partizione del fornitore su una versione specifica del VSR. L'insieme di funzionalità che Android si aspetta dalla partizione del fornitore è determinato dal livello dell'API del fornitore associato alla partizione. In fase di esecuzione, il comportamento del software in esecuzione nella partizione di sistema viene modificato in base al livello dell'API del fornitore della partizione del fornitore. Ad esempio, il software nella partizione di sistema potrebbe non utilizzare le 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 del fornitore viene rilasciato separatamente, il che significa che il livello API dell'SDK e il livello API del fornitore non sono sincronizzati.
A causa delle pianificazioni di rilascio separate, per Android 14-QPR3 e versioni successive, il livello dell'API del fornitore è completamente disaccoppiato dal livello dell'API dell'SDK. Per garantire la chiarezza di questo disaccoppiamento, il formato del livello API del fornitore è una data formattata come AAAAMM (anno e mese), mentre il livello SDK è un numero intero.
Android 14-QPR3 e versioni successive contengono le seguenti proprietà di sistema 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 solo del chipset e viene impostata dai fornitori di SoC se il chipset SoC è idoneo 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 SDK con cui viene lanciato inizialmente 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 a cui deve essere conforme il dispositivo nel suo complesso. | Descritto dopo questa tabella. |
ro.board.api_frozen |
booleano | Questa proprietà viene impostata su true se il livello dell'API del fornitore rappresentato da ro.board.api_level è stato 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'attuale LLNDK nella partizione di sistema. LLNDK è compatibile con le versioni precedenti, pertanto qualsiasi immagine del fornitore precedente o uguale a questo livello API può essere flashata con questa immagine di sistema. | Questa proprietà viene impostata dalla partizione di sistema. |
La proprietà ro.vendor.api_level
viene ricavata in uno dei seguenti due 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 è soggetto al blocco del fornitore:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
Il metodo AVendorSupport_getVendorApiLevelOf()
determina il corrispondente
livello API del fornitore da un livello API dell'SDK. Ad esempio,
AVendorSupport_getVendorApiLevelOf(35)
, dove 35
è il livello API SDK della
release principale di Android nel 2024, restituisce 202404
, che è la data approssimativa per
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 è destinato all'interfaccia app-OS e viene aggiornato una volta all'anno quando la nuova piattaforma Android viene rilasciata in AOSP.
Android 13 contiene le seguenti proprietà di sistema 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. Si tratta di una funzione solo del chipset e non può essere modificata dai fornitori di SoC o dagli OEM. Questa proprietà viene 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à viene 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 viene eseguito l'upgrade della partizione del fornitore. |
ro.product.first_api_level |
Numero intero | Il livello API SDK con cui viene lanciato inizialmente 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 | Il livello API del fornitore a cui deve essere conforme il dispositivo nel suo complesso. | Descritto dopo questa tabella. |
ro.vndk.version |
Numero intero | La versione di VNDK su cui è basata la partizione del fornitore. | Questa proprietà viene 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 dell'albero 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 ad albero di origine in cui è stata creata la partizione del fornitore. |
La proprietà ro.vendor.api_level
viene impostata automaticamente sul valore minimo di ro.board.api_level
(o ro.board.first_api_level
se ro.board.api_level
non è definito) e
ro.product.first_api_level
.