Assurer la compatibilité avec différentes versions de la plate-forme Android

Bien que les dernières versions d'Android fournissent souvent d'excellentes API pour votre application, vous devez continuer à prendre en charge les anciennes versions d'Android jusqu'à ce que davantage d'appareils soient mis à jour. Cette page vous explique comment exploiter les toutes dernières API tout en continuant à accepter les anciennes versions.

Utilisez l'assistant Nouveau projet d'Android Studio pour déterminer la répartition des appareils actifs exécutant chaque version d'Android. Cette répartition se base sur le nombre d'appareils qui accèdent au Google Play Store. En règle générale, nous recommandons de prendre en charge environ 90 % des appareils actifs, tout en ciblant votre application sur la dernière version.

Conseil : Pour fournir des fonctionnalités optimales sur plusieurs versions d'Android, utilisez la bibliothèque Android Support dans votre application. Cela vous permet d'exploiter plusieurs API de plate-forme récentes sur les anciennes versions.

Spécifier les niveaux d'API minimaux et cibles

Le fichier AndroidManifest.xml décrit les détails de votre application et identifie les versions d'Android compatibles. Plus précisément, les attributs minSdkVersion et targetSdkVersion de l'élément <uses-sdk> identifient le niveau d'API le plus faible avec lequel votre application peut fonctionner et le niveau d'API le plus élevé sur lequel vous l'avez conçue et testée.

Par exemple :

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

Certains styles et comportements peuvent changer au fil des versions d'Android. Pour permettre à votre application de bénéficier de ces modifications et vous assurer qu'elle répond au style d'appareil de chaque utilisateur, spécifiez la dernière version d'Android dans l'élément targetSdkVersion.

Vérifier la version du système au moment de l'exécution

Android fournit un code unique pour chaque version de plate-forme dans la classe des constantes Build. Utilisez ces codes dans votre application pour créer des conditions garantissant que le code qui dépend de niveaux d'API supérieurs est exécuté uniquement lorsque ces API sont disponibles sur le système.

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);
    }
}

Remarque : Lors de l'analyse des ressources XML, Android ignore les attributs XML qui ne sont pas compatibles avec l'appareil actuel. Vous pouvez ainsi utiliser des attributs XML qui ne sont compatibles qu'avec les versions plus récentes, sans craindre que les anciennes versions ne soient défaillantes lorsqu'elles rencontrent ce code. Par exemple, si vous définissez targetSdkVersion="11", votre application inclut l'élément ActionBar par défaut sur Android 3.0 ou version ultérieure. Pour ajouter ensuite des éléments de menu à la barre d'action, vous devez définir android:showAsAction="ifRoom" dans le code XML de votre ressource de menu. Vous pouvez effectuer cette opération dans un fichier XML multiversion, car les anciennes versions d'Android ignorent simplement l'attribut showAsAction. En d'autres termes, vous n'avez pas besoin d'une version distincte dans res/menu-v11/.

Utiliser les styles et les thèmes de la plate-forme sous-jacente

Android fournit des thèmes d'expérience utilisateur qui donnent aux applications l'apparence du système d'exploitation sous-jacent. Ces thèmes peuvent être appliqués à votre application dans le fichier manifeste. Grâce à ces styles et thèmes intégrés, votre application s'adapte naturellement à la dernière apparence d'Android à chaque nouvelle version.

Pour que votre activité ressemble à une boîte de dialogue, utilisez :

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

Pour que l'arrière-plan de votre activité soit transparent, utilisez :

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

Pour appliquer votre propre thème personnalisé défini dans /res/values/styles.xml, utilisez :

<activity android:theme="@style/CustomTheme">

Pour appliquer un thème à l'ensemble de votre application (à toutes les activités), ajoutez l'attribut android:theme à l'élément <application> :

<application android:theme="@style/CustomTheme">

Pour en savoir plus sur la création et l'utilisation de thèmes, consultez le guide Styles et thèmes.