<uses-sdk>

Google Play utilizza gli attributi <uses-sdk> dichiarati nel file manifest dell'app per filtrare la tua app in base ai dispositivi che non soddisfano i requisiti di versione della piattaforma. Prima di impostare questi attributi, assicurati di aver compreso i filtri di Google Play.

sintassi:
<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />
contenuto in:
<manifest>
description:

Consente di esprimere la compatibilità di un'applicazione con una o più versioni della piattaforma Android tramite un numero intero a livello API. Il livello API espresso da un'applicazione viene confrontato con il livello API di un determinato sistema Android, che può variare in base ai diversi dispositivi Android.

Nonostante il nome, questo elemento viene utilizzato per specificare il livello API, non il numero di versione del software development kit (SDK) o della piattaforma Android. Il livello API è sempre un singolo numero intero. Non puoi ricavare il livello API dal numero di versione Android associato. Ad esempio, non equivale alla versione principale o alla somma delle versioni maggiori e minori.

Leggi anche il documento relativo al controllo delle versioni delle tue applicazioni.

attributi:
android:minSdkVersion
Un numero intero che indica il livello API minimo richiesto per l'esecuzione dell'applicazione. Il sistema Android impedisce all'utente di installare l'applicazione se il livello API del sistema è inferiore al valore specificato in questo attributo. Dichiara sempre questo attributo.

Attenzione:se non dichiari questo attributo, il sistema presume il valore predefinito "1", che indica che la tua applicazione è compatibile con tutte le versioni di Android. Se non lo è e non hai dichiarato il minSdkVersion corretto, quando è installata su un sistema con un livello API incompatibile, l'applicazione si arresta in modo anomalo durante il runtime, quando tenti di accedere alle API non disponibili. Per questo motivo, assicurati di dichiarare il livello API appropriato nell'attributo minSdkVersion.

android:targetSdkVersion
Un numero intero che indica il livello API scelto come target dell'applicazione. Se non viene configurato, il valore predefinito è uguale a quello specificato per minSdkVersion.

Questo attributo indica al sistema che hai eseguito il test rispetto alla versione di destinazione e il sistema non attiva alcun comportamento di compatibilità per mantenere la compatibilità in avanti dell'app con la versione di destinazione. L'applicazione può comunque essere eseguita su versioni precedenti (fino a minSdkVersion).

Per via dell'evoluzione di Android a ogni nuova versione, alcuni comportamenti e persino aspetti visivi possono cambiare. Tuttavia, se il livello API della piattaforma è superiore alla versione dichiarata dall'targetSdkVersion dell'app, il sistema può attivare comportamenti di compatibilità in modo che l'app continui a funzionare come previsto. Puoi disabilitare questi comportamenti di compatibilità specificando targetSdkVersion in modo che corrisponda al livello API della piattaforma su cui è in esecuzione.

Ad esempio, l'impostazione di questo valore su "11" o superiore consente al sistema di applicare il tema predefinito Holo all'app quando viene eseguito su Android 3.0 o versioni successive e di disattivare anche la modalità di compatibilità dello schermo su schermi più grandi, perché il supporto per il livello API 11 supporta implicitamente schermi più grandi.

Esistono molti comportamenti di compatibilità che il sistema può attivare in base al valore impostato per questo attributo. Molti di questi comportamenti sono descritti dalle versioni della piattaforma corrispondenti nel riferimento Build.VERSION_CODES.

Per gestire la tua applicazione insieme a ogni release di Android, aumenta il valore di questo attributo in modo che corrisponda al livello API più recente, quindi testa accuratamente l'applicazione sulla versione della piattaforma corrispondente.

Data presentazione: livello API 4

android:maxSdkVersion
Un numero intero che indica il livello API massimo su cui è progettata l'esecuzione dell'applicazione.

In Android 1.5, 1.6, 2.0 e 2.0.1, il sistema controlla il valore di questo attributo durante l'installazione di un'applicazione e in fase di nuova convalida dell'applicazione dopo un aggiornamento di sistema. In entrambi i casi, se l'attributo maxSdkVersion dell'applicazione è inferiore al livello API utilizzato dal sistema stesso, il sistema non consente l'installazione dell'applicazione. Nel caso della riconvalida dopo l'aggiornamento di sistema, questa operazione rimuove di fatto l'applicazione dal dispositivo.

Per illustrare in che modo questo attributo può influire sulla tua applicazione dopo gli aggiornamenti di sistema, considera l'esempio seguente:

Un'applicazione che dichiara maxSdkVersion="5" nel file manifest viene pubblicata su Google Play. Un utente con un dispositivo con Android 1.6 (livello API 4) scarica e installa l'app. Dopo alcune settimane, l'utente riceve un aggiornamento di sistema over-the-air ad Android 2.0 (livello API 5). Dopo aver installato l'aggiornamento, il sistema controlla il valore maxSdkVersion dell'applicazione e lo convalida nuovamente.

L'applicazione funziona normalmente. Tuttavia, qualche tempo dopo, il dispositivo riceve un altro aggiornamento di sistema, questa volta ad Android 2.0.1 (livello API 6). Dopo l'aggiornamento, il sistema non può più riconvalidare l'applicazione perché il livello API (6) del sistema è superiore al livello massimo supportato dall'applicazione (5). Il sistema impedisce all'applicazione di essere visibile all'utente, rimuovendola infatti dal dispositivo.

Avviso: sconsigliamo di dichiarare questo attributo. Innanzitutto, non è necessario impostare l'attributo come mezzo per bloccare il deployment dell'applicazione sulle nuove versioni della piattaforma Android man mano che vengono rilasciate. In base alla progettazione, le nuove versioni della piattaforma sono completamente compatibili con le versioni precedenti. L'applicazione funziona correttamente sulle nuove versioni, a condizione che utilizzi solo API standard e segua le best practice per lo sviluppo. In secondo luogo, in alcuni casi la dichiarazione dell'attributo può comportare la rimozione dell'applicazione dai dispositivi degli utenti dopo un aggiornamento di sistema a un livello API superiore. La maggior parte dei dispositivi su cui è probabile che la tua applicazione venga installata riceve aggiornamenti di sistema periodici over-the-air, quindi valutane l'effetto sull'applicazione prima di impostare questo attributo.

Data presentazione: livello API 4

Alcune versioni di Android (oltre ad Android 2.0.1) non controllano o applicano l'attributo maxSdkVersion durante l'installazione o la riconvalida. Google Play continua a utilizzare l'attributo come filtro, tuttavia, quando presenta agli utenti applicazioni disponibili per il download.
introdotto in:
Livello API 1

Che cos'è il livello API?

Il livello API è un valore intero che identifica in modo univoco la revisione dell'API del framework offerta da una versione della piattaforma Android.

La piattaforma Android fornisce un'API framework che le applicazioni possono utilizzare per interagire con il sistema Android sottostante. L'API framework è composta da:

  • Un insieme principale di pacchetti e classi
  • Un insieme di elementi e attributi XML per la dichiarazione di un file manifest
  • Un insieme di elementi e attributi XML per la dichiarazione e l'accesso alle risorse
  • Un insieme di intenti
  • Un insieme di autorizzazioni che le applicazioni possono richiedere, nonché le applicazioni delle autorizzazioni incluse nel sistema

Ogni versione successiva della piattaforma Android può includere aggiornamenti dell'API Android Application Framework fornita.

Gli aggiornamenti dell'API Framework sono progettati in modo che la nuova API rimanga compatibile con le versioni precedenti dell'API. La maggior parte delle modifiche all'API è aggiuntiva e introduce funzionalità nuove o sostitutive. Durante l'upgrade di alcune parti dell'API, le parti sostituite precedenti sono deprecate ma non vengono rimosse, in modo che le applicazioni esistenti possano continuare a utilizzarle.

In un numero molto ridotto di casi, alcune parti dell'API vengono modificate o rimosse, anche se in genere tali modifiche sono necessarie solo per supportare la robustezza dell'API e la sicurezza dell'applicazione o del sistema. Tutte le altre parti dell'API derivanti dalle revisioni precedenti vengono trasferite senza modifiche.

L'API framework fornita da una piattaforma Android viene specificata utilizzando un identificatore intero chiamato livello API. Ogni versione della piattaforma Android supporta esattamente un livello API, sebbene il supporto sia implicito per tutti i livelli API precedenti (fino al livello API 1). La release iniziale della piattaforma Android forniva il livello API 1, mentre le release successive hanno incrementato il livello API.

La seguente tabella specifica il livello API supportato da ogni versione della piattaforma Android. Per informazioni sul numero relativo di dispositivi su cui eseguono ogni versione, consulta la dashboard di distribuzione.

Versione piattaformaLivello APICODICE_VERSIONENotes
Android 15 API 34 → Beta 2 VANILLA_ICE_CREAM Caratteristiche principali della piattaforma
Android 14 34 UPSIDE_DOWN_CAKE Caratteristiche principali della piattaforma
Android 13 33 TIRAMISU Caratteristiche principali della piattaforma
Android 12 32 S_V2 Caratteristiche principali della piattaforma
31 S Caratteristiche principali della piattaforma
Android 11 30 R Caratteristiche principali della piattaforma
Android 10 29 Q Caratteristiche principali della piattaforma
Android 9 28 P Caratteristiche principali della piattaforma
Android 8.1 27 O_MR1 Caratteristiche principali della piattaforma
Android 8.0 26 O Caratteristiche principali della piattaforma
Android 7.1.1
Android 7.1
25 N_MR1 Caratteristiche principali della piattaforma
Android 7.0 24 N Caratteristiche principali della piattaforma
Android 6.0 23 M Caratteristiche principali della piattaforma
Android 5.1 22 LOLLIPOP_MR1 In evidenza della piattaforma
Android 5.0 21 LOLLIPOP
Android 4,4 W 20 KITKAT_WATCH KitKat solo per indossabili
Android 4.4 19 KITKAT In evidenza della piattaforma
Android 4.3 18 JELLY_BEAN_MR2 In evidenza della piattaforma
Android 4.2, 4.2.2 17 JELLY_BEAN_MR1 In evidenza della piattaforma
Android 4.1, 4.1.1 16 JELLY_BEAN In evidenza della piattaforma
Android 4.0.3, 4.0.4 15 ICE_CREAM_SANDWICH_MR1 In evidenza della piattaforma
Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2
Android 3.1.x 12 HONEYCOMB_MR1 Caratteristiche principali della piattaforma
Android 3.0.x 11 HONEYCOMB Caratteristiche principali della piattaforma
Android 2.3.4
Android 2.3.3
10 GINGERBREAD_MR1 In evidenza della piattaforma
Android 2.3.2
Android 2.3.1
Android 2.3
9 GINGERBREAD
Android 2.2.x 8 FROYO Caratteristiche principali della piattaforma
Android 2.1.x 7 ECLAIR_MR1 In evidenza della piattaforma
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT Caratteristiche principali della piattaforma
Android 1.5 3 CUPCAKE Caratteristiche principali della piattaforma
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE

Utilizzi del livello API in Android

L'identificatore a livello di API ha un ruolo fondamentale per garantire la migliore esperienza possibile a utenti e sviluppatori di applicazioni:

  • Consente alla piattaforma Android di descrivere la revisione massima dell'API framework che supporta.
  • Consente alle applicazioni di descrivere la revisione dell'API del framework richiesta.
  • Consente al sistema di negoziare l'installazione di applicazioni sul dispositivo dell'utente in modo da non installare applicazioni non compatibili con la versione.

Ogni versione della piattaforma Android archivia il proprio identificatore a livello API internamente, nello stesso sistema Android.

Le applicazioni possono utilizzare un elemento manifest fornito dall'API del framework (<uses-sdk>) per descrivere i livelli API minimi e massimi sotto i quali possono essere eseguite, nonché il livello API preferito che sono progettate per supportare. L'elemento offre tre attributi chiave:

  • android:minSdkVersion: il livello API minimo su cui può essere eseguita l'applicazione. Il valore predefinito è "1".
  • android:targetSdkVersion: il livello API su cui è progettata l'applicazione. In alcuni casi, ciò consente all'applicazione di utilizzare elementi manifest o comportamenti definiti nel livello API di destinazione, anziché essere limitata all'utilizzo solo di quelli definiti per il livello API minimo.
  • android:maxSdkVersion: il livello API massimo su cui può essere eseguita l'applicazione. Importante: leggi le informazioni su questo attributo su questa pagina prima di utilizzarlo.

Ad esempio, per specificare il livello minimo dell'API di sistema richiesto da un'applicazione per l'esecuzione, l'applicazione include nel file manifest un elemento <uses-sdk> con un attributo android:minSdkVersion. Il valore android:minSdkVersion è il numero intero corrispondente al livello API della prima versione della piattaforma Android in cui può essere eseguita l'applicazione.

Quando l'utente tenta di installare un'applicazione o quando riconvalida un'applicazione dopo un aggiornamento di sistema, il sistema Android prima controlla gli attributi <uses-sdk> nel file manifest dell'applicazione e confronta i valori con il proprio livello API interno. Il sistema consente di iniziare l'installazione solo se vengono soddisfatte le seguenti condizioni:

  • Se viene dichiarato un attributo android:minSdkVersion, il suo valore è inferiore o uguale al numero intero a livello di API del sistema. Se non viene dichiarato, il sistema presuppone che l'applicazione richieda il livello API 1.
  • Se viene dichiarato un attributo android:maxSdkVersion, il suo valore è uguale o superiore al numero intero a livello di API del sistema. Se non viene dichiarato, il sistema presuppone che l'applicazione non abbia un livello API massimo. Leggi la descrizione di questo attributo per ulteriori informazioni su come il sistema lo gestisce.

Quando viene dichiarato nel file manifest di un'applicazione, un elemento <uses-sdk> potrebbe avere il seguente aspetto:

<manifest>
  <uses-sdk android:minSdkVersion="5" />
  ...
</manifest>

Il motivo principale per cui un'applicazione dichiara un livello API in android:minSdkVersion è comunicare al sistema Android che utilizza API che sono state introdotte nel livello API specificato.

Se l'applicazione viene installata in qualche modo su una piattaforma con un livello API inferiore, si arresta in modo anomalo in fase di runtime quando tenta di accedere ad API che non esistono. Il sistema impedisce che ciò accada perché non consente l'installazione dell'applicazione se il livello API più basso richiesto è superiore a quello della versione della piattaforma sul dispositivo di destinazione.

Considerazioni sullo sviluppo

Le sezioni seguenti forniscono informazioni relative al livello API che devi considerare quando sviluppi la tua applicazione.

Compatibilità con l'inoltro delle applicazioni

Le applicazioni Android sono in genere compatibili con le nuove versioni della piattaforma Android.

Poiché quasi tutte le modifiche all'API del framework sono additive, un'applicazione Android sviluppata utilizzando una determinata versione dell'API, come specificato dal suo livello API, è compatibile con le versioni successive della piattaforma Android e con livelli API superiori. L'applicazione può essere eseguita su tutte le versioni successive della piattaforma Android, tranne in casi isolati in cui l'applicazione utilizza una parte dell'API che in seguito viene rimossa per qualche motivo.

La compatibilità in avanti è importante perché molti dispositivi Android ricevono aggiornamenti di sistema over-the-air (OTA). L'utente potrebbe installare la tua applicazione e utilizzarla correttamente, per poi ricevere in seguito un aggiornamento OTA a una nuova versione della piattaforma Android. Una volta installato l'aggiornamento, l'applicazione viene eseguita in una nuova versione di runtime dell'ambiente, ma che include ancora l'API e le funzionalità di sistema da cui dipende l'applicazione.

Le modifiche al di sotto dell'API, ad esempio quelle nel sistema sottostante, possono interessare l'applicazione quando viene eseguita nel nuovo ambiente. In qualità di sviluppatore di applicazioni, è importante comprendere l'aspetto e il comportamento dell'applicazione in ciascun ambiente del sistema.

Per aiutarti a testare la tua applicazione su varie versioni della piattaforma Android, l'SDK Android include diverse piattaforme da scaricare. Ogni piattaforma include un'immagine di sistema compatibile che puoi eseguire in una durata di visualizzazione media per testare l'applicazione.

Compatibilità con le versioni precedenti dell'applicazione

Le app per Android non sono necessariamente compatibili con le versioni precedenti della piattaforma Android precedenti alla versione in base alla quale sono state compilate.

Ogni nuova versione della piattaforma Android può includere nuove API framework, ad esempio quelle che consentono alle applicazioni di accedere a nuove funzionalità della piattaforma o che sostituiscono le parti delle API esistenti. Le nuove API sono accessibili alle applicazioni quando sono eseguite sulla nuova piattaforma e anche quando vengono eseguite su versioni successive della piattaforma, come specificato dal livello API. Tuttavia, poiché le versioni precedenti della piattaforma non includono le nuove API, le applicazioni che utilizzano le nuove API non possono essere eseguite su tali piattaforme.

Sebbene non sia probabile che un dispositivo basato su Android venga sottoposto a downgrade a una versione precedente della piattaforma, è importante tenere presente che è probabile che sul campo ci siano molti dispositivi su cui sono installate versioni precedenti della piattaforma. Anche tra i dispositivi che ricevono aggiornamenti OTA, alcuni potrebbero ritardare e non ricevere un aggiornamento per un periodo di tempo significativo.

Seleziona una versione della piattaforma e un livello API

Durante lo sviluppo di un'applicazione, scegli la versione della piattaforma su cui compili l'applicazione. In generale, compila la tua applicazione sulla base della versione più bassa possibile della piattaforma che l'applicazione può supportare.

Puoi determinare la versione della piattaforma più bassa possibile compilando l'applicazione in base a destinazioni di build successive. Dopo aver determinato la versione più bassa, crea una durata di visualizzazione media utilizzando la versione della piattaforma e il livello API corrispondenti, quindi testa completamente l'applicazione. Assicurati di dichiarare un attributo android:minSdkVersion nel file manifest dell'applicazione e di impostare il suo valore sul livello API della versione della piattaforma.

Dichiara un livello API minimo

Se crei un'applicazione che utilizza API o funzionalità di sistema introdotte nell'ultima versione della piattaforma, imposta l'attributo android:minSdkVersion sul livello API dell'ultima versione della piattaforma. In questo modo gli utenti potranno installare la tua applicazione solo se sui loro dispositivi è in esecuzione una versione compatibile della piattaforma Android. In questo modo, avrai la certezza che l'applicazione possa funzionare correttamente sui dispositivi.

Se la tua applicazione utilizza le API introdotte nell'ultima versione della piattaforma, ma non dichiara un attributo android:minSdkVersion, allora viene eseguita correttamente sui dispositivi che eseguono l'ultima versione della piattaforma, ma non su quelli che eseguono versioni precedenti della piattaforma. In quest'ultimo caso, l'applicazione si arresta in modo anomalo in fase di runtime, quando tenta di utilizzare API che non esistono nelle versioni precedenti.

Esegui test rispetto a livelli API più elevati

Dopo aver compilato l'applicazione, assicurati di testarla sulla piattaforma specificata nell'attributo android:minSdkVersion dell'applicazione. Per farlo, crea una durata di visualizzazione media che utilizzi la versione della piattaforma richiesta dall'applicazione. Inoltre, per verificare la compatibilità con le versioni future, esegui e testa l'applicazione su tutte le piattaforme che utilizzano un livello API superiore a quello usato dalla tua applicazione.

L'SDK Android include più versioni della piattaforma che puoi utilizzare, tra cui la versione più recente, e fornisce uno strumento di aggiornamento che puoi utilizzare per scaricare altre versioni della piattaforma, se necessario.

Per accedere al programma di aggiornamento, usa lo strumento a riga di comando android, che si trova nella directory <sdk>/tools. Puoi avviare il programma di aggiornamento dell'SDK eseguendo android sdk. Puoi anche fare doppio clic sul file android.bat (Windows) o android (OS X/Linux).

Per eseguire l'applicazione su versioni della piattaforma diverse nell'emulatore, crea una durata di visualizzazione media per ogni versione della piattaforma che vuoi testare. Per ulteriori informazioni sulla durata di visualizzazione media, vedi Creare e gestire dispositivi virtuali. Se utilizzi un dispositivo fisico per i test, assicurati di conoscere il livello API della piattaforma Android su cui esegue. Consulta la tabella di questo documento per un elenco delle versioni della piattaforma e dei relativi livelli API.

Filtra la documentazione di riferimento per livello API

Le pagine della documentazione di riferimento della piattaforma Android offrono un controllo "Livello API" nell'area in alto a sinistra di ogni pagina. Puoi utilizzare il controllo per mostrare la documentazione solo per le parti dell'API effettivamente accessibili alla tua applicazione, in base al livello API specificato nell'attributo android:minSdkVersion del file manifest.

Per usare i filtri, seleziona dal menu il livello API specificato dall'applicazione. Le API introdotte in un livello API successivo vengono poi non selezionabili e il loro contenuto viene mascherato, in quanto non sono accessibili alla tua applicazione.

Il filtro per livello API nella documentazione non fornisce una visualizzazione delle novità o delle novità introdotte in ogni livello API. Consente di visualizzare l'intera API associata a un determinato livello API, escludendo al contempo gli elementi API introdotti in livelli API successivi.

Per tornare a visualizzare la documentazione completa, seleziona REL nella parte superiore del menu del livello API. Per impostazione predefinita, il filtro a livello di API è disattivato, quindi puoi visualizzare l'API completa del framework, indipendentemente dal livello API.

La documentazione di riferimento per i singoli elementi dell'API specifica il livello API a cui ogni elemento viene introdotto. Il livello API per pacchetti e classi è specificato come "Aggiunto nel livello API" nell'angolo in alto a destra dell'area dei contenuti in ogni pagina della documentazione. Il livello API per i membri del corso è specificato nelle intestazioni della descrizione dettagliate, sul margine destro.