Supportare diverse versioni della piattaforma

Anche se le versioni più recenti di Android spesso forniscono API straordinarie per la tua app, devi continuare a supportare le versioni precedenti di Android fino a quando non verranno aggiornati altri 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, pur scegliendo come target la versione più recente dell'app.

Suggerimento: per offrire le migliori funzionalità per le diverse versioni di Android, devi usare la libreria di supporto Android nell'app, che ti consente di usare diverse API recenti della piattaforma sulle versioni precedenti.

Specifica i livelli API minimo e target

Il file AndroidManifest.xml descrive i dettagli dell'app e identifica le versioni di Android supportate. In particolare, 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 l'hai progettata e testata.

Ecco alcuni esempi:

<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 queste modifiche e assicurarti che si adatti allo stile del dispositivo di ogni utente, devi impostare il valore targetSdkVersion in modo che corrisponda all'ultima versione di Android disponibile.

Controlla la versione del sistema in fase di runtime

Android fornisce un codice univoco per ogni versione della piattaforma nella classe delle costanti Build. Utilizza questi codici all'interno della tua app per creare condizioni che garantiscono che il codice che dipende da livelli API più elevati venga eseguito solo quando le API sono disponibili nel 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);
    }
}

Nota: durante l'analisi delle risorse XML, Android ignora gli attributi XML non supportati dal dispositivo corrente. In questo modo puoi utilizzare gli attributi XML, supportati solo dalle versioni più recenti, senza preoccuparti che le versioni precedenti vengano danneggiate quando si verifica il problema. Ad esempio, se imposti targetSdkVersion="11", la tua app includerà ActionBar per impostazione predefinita su Android 3.0 e versioni successive. Per aggiungere le voci di menu alla barra delle azioni, devi impostare android:showAsAction="ifRoom" nel file XML della risorsa di menu. Puoi eseguire questa operazione in un file XML tra più versioni, poiché le versioni precedenti di Android ignorano semplicemente l'attributo showAsAction (in altre parole, non è necessaria 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 e il design del sistema operativo sottostante. Questi temi possono essere applicati alla tua app all'interno del file manifest. Grazie all'utilizzo di questi stili e temi integrati, la tua app segua in modo naturale l'aspetto e il design più recenti di Android a ogni nuova release.

Per visualizzare l'attività come una finestra di dialogo:

<activity android:theme="@android:style/Theme.Dialog">

Per impostare lo sfondo trasparente delle tue attività:

<activity android:theme="@android:style/Theme.Translucent">

Per applicare il tuo 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ù su come creare e utilizzare i temi, leggi la guida Stili e temi.