Anche se le versioni più recenti di Android spesso forniscono API ottimali per la tua app, devi continuare a supportare le versioni precedenti di Android finché non vengono aggiornati più dispositivi. Questa lezione mostra come sfruttare le API più recenti continuando a supportare anche le versioni precedenti.
Utilizza la procedura guidata Nuovo progetto di Android Studio per trovare la distribuzione dei dispositivi attivi che eseguono ogni versione di Android. Questa distribuzione si basa sul numero di dispositivi che visitano il Google Play Store. In genere, consigliamo di supportare circa il 90% dei dispositivi attivi, mentre di scegliere come target l'ultima versione dell'app.
Suggerimento: per fornire le migliori funzionalità in diverse versioni di Android, ti consigliamo di utilizzare la libreria di supporto Android nella tua app, che ti consente di utilizzare diverse API della piattaforma recenti nelle versioni precedenti.
Specificare i livelli API minimo e target
Il file AndroidManifest.xml
descrive i dettagli della tua app e
identifica le versioni di Android supportate. Nello specifico, gli attributi minSdkVersion
e targetSdkVersion
per l'elemento <uses-sdk>
identificano il livello API più basso con cui la tua app è compatibile e il livello API più alto rispetto
al quale hai progettato e testato la tua app.
Ad esempio:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
Con il rilascio di nuove versioni di Android, alcuni stili e comportamenti potrebbero cambiare.
Per consentire alla tua app di sfruttare questi cambiamenti e assicurarti che si adatti allo stile del dispositivo di ogni utente, devi impostare il valore di
targetSdkVersion
in modo che corrisponda all'ultima versione di Android
disponibile.
Poiché le versioni secondarie dell'SDK non sono legate a modifiche del comportamento, non è possibile impostare
targetSdkVersion
in modo che rifletta una versione secondaria dell'SDK. Se vuoi chiamare un'API in una versione
secondaria dell'SDK più recente di minSdkVersion
, controlla la
versione del sistema in fase di runtime.
Controllare la versione del sistema in fase di runtime
Android fornisce un codice univoco per ogni versione della piattaforma nella classe di costanti Build
. Utilizza questi codici all'interno dell'app per creare condizioni che garantiscano che il codice che
dipende da livelli API più elevati venga eseguito solo quando queste API sono disponibili sul sistema.
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
Puoi utilizzare Build.VERSION.SDK_INT_FULL per verificare la presenza di una versione dell'SDK principale o secondaria.
Kotlin
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Java
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Nota: durante l'analisi delle risorse XML, Android ignora gli attributi XML
non supportati dal dispositivo corrente. In questo modo, puoi utilizzare in sicurezza gli attributi XML supportati solo dalle versioni più recenti senza preoccuparti che le versioni precedenti smettano di funzionare quando incontrano quel codice. Ad esempio, se imposti
targetSdkVersion="11"
, la tua app include ActionBar
per impostazione predefinita
su Android 3.0 e versioni successive. Per aggiungere elementi del menu alla barra delle azioni, devi impostare
android:showAsAction="ifRoom"
nel file XML delle risorse del menu. È sicuro farlo
in un file XML cross-version, perché le versioni precedenti di Android ignorano semplicemente l'attributo
showAsAction
(ovvero, non hai bisogno di una versione
separata in res/menu-v11/
).
Utilizzare stili e temi della piattaforma
Android offre temi per l'esperienza utente che conferiscono alle app l'aspetto del sistema operativo sottostante. Questi temi possono essere applicati alla tua app all'interno del file manifest. Utilizzando questi stili e temi integrati, la tua app seguirà naturalmente l'aspetto più recente di Android a ogni nuova release.
Per fare in modo che l'attività assomigli a una finestra di dialogo:
<activity android:theme="@android:style/Theme.Dialog">
Per fare in modo che la tua attività abbia uno sfondo trasparente:
<activity android:theme="@android:style/Theme.Translucent">
Per applicare il tema personalizzato definito in /res/values/styles.xml
:
<activity android:theme="@style/CustomTheme">
Per applicare un tema all'intera app (tutte le attività), aggiungi l'attributo android:theme
all'elemento <application>
:
<application android:theme="@style/CustomTheme">
Per saperne di più sulla creazione e sull'utilizzo dei temi, leggi la guida Stili e temi.