Supportare diverse versioni della piattaforma

Sebbene le versioni più recenti di Android spesso forniscano API fantastiche per la tua app, devi continuare a supportare le versioni precedenti di Android finché non verranno aggiornati più dispositivi. Questo mostra come sfruttare le API più recenti continuando a supportare e versioni successive.

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 visita il Google Play Store. In genere, consigliamo di supportare circa il 90% dei dispositivi attivi, mentre il targeting della tua app all'ultima versione.

Suggerimento: per offrire le migliori funzionalità e su diverse versioni di Android, devi usare Android Support Library nell'app, che ti consente di usare diverse API recenti delle piattaforme su versioni precedenti.

Specificare i livelli API minimi 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ù elevato 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 trarre vantaggio da questi cambiamenti e assicurarti che si adatti allo stile di dispositivo di ciascun utente, devi impostare targetSdkVersion affinché corrisponda all'ultima versione di Android disponibili.

Controlla la versione del sistema in fase di runtime

Android fornisce un codice univoco per ogni versione della piattaforma nella classe Build constants. Usa questi codici all'interno dell'app per creare condizioni che assicurano che il codice dipende da livelli API più elevati e viene eseguito solo quando queste 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 il codice XML attributi non supportati dal dispositivo corrente. Quindi puoi tranquillamente usare attributi XML sono supportati solo dalle versioni più recenti senza preoccuparsi che le versioni precedenti non funzionino quando ritroverai 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 impostareandroid:showAsAction="ifRoom" nel file XML della risorsa del menu. È sicuro eseguire questa operazione in un file XML con più versioni, perché le versioni precedenti di Android ignorano semplicemente showAsAction (in altre parole, non è necessario un versione in res/menu-v11/).

Utilizza stili e temi della piattaforma

Android offre temi per l'esperienza utente che conferiscono alle app l'aspetto e il design il sistema operativo sottostante. Questi temi possono essere applicati alla tua app all'interno manifest. Utilizzando questi stili e temi integrati, la tua app seguiranno naturalmente l'aspetto e il design più recenti di Android a ogni nuova release.

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

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

Per impostare uno sfondo trasparente per la tua 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 scoprire di più sulla creazione e sull'utilizzo dei temi, leggi la guida Stili e temi.