mardi 12 mars 2013

Astuces Android : API de compatibilité Support v4

Parmi les questions essentielles dont on se pose lors de développement de notre application Android, est la question de compatibilité : comment faire pour que notre application fonctionne sur la plupart des versions Android ?

Dans cet article, vous trouverez un petit guide vous permettant de développer une application supportée par Android 1.6 ou plus !


1- Configuration du projet :


Lors de la création de votre projet, vous devez sélectionner les API Android ciblés, les correspondances entre API level et versions Android sont listées ici : Android API levels
Vous pouvez modifier ces paramètres a tout moment dans AndroidManifest.mf :

Exemple :
<uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="17" />

avec :
minSdkVersion : API de niveau plus bas supportée (ici il s'agit de API level 7 correspondant à Android 2.1)
targetSdkVersion : API de référence utilisée par l'IDE lors du développement du projet.

2- Importer l'API de compatibilité :


Si vous voulez bénéficiez des possibilités offertes par les nouvelles API Android, sans que vous sacrifiez la compatibilité de votre application avec les anciennes versions, la solution est l'utilisation de l'API de compatibilité support v4.

Voici comment importer l'API :




Vous verrez ensuite que android-support-v4.jar c'est ajouté à votre projet :




3- Utilisation de l'API Support v4 :


Plusieurs classes et méthodes sont apparus avec les nouvelles API Android, donc ils existent pas dans les versions précédentes, pour assurer la compatibilité vous devez remplacer les imports de ces classes par celles fournis dans l'API.
Vous verrez rapidement l'utilité dès que vous commencez à utiliser des Fragments tels que la classe DialogFragment.

Exemple Remplacer 
android.app.DialogFragment;
par
import android.support.v4.app.DialogFragment;

4- Limitations :


J'était très heureux qu'il existe une telle API, jusqu'au moment où j'ai pas trouvé un équivalent à la classe PreferenceFragment dans Support  v4 API, et là si on souhaite créer un écran de préférences pour notre application qui est basé sur les fragments on est bloqué !
Dans ce cas la solution que j'ai adapté c'est de créer 2 activités : une implémentant PreferenceActivity qui est destinée pour les API level 10 ou inférieur et une autre pour les API level 11 ou plus implémentant PreferenceActivity et qui instancie à l'intérieur un inner class PreferenceFragment.

Voici le code source :





Pour lancer la bonne activité il suffit de tester sur la version d'Android comme suit :



Il est possible qu'en testant votre application sur l'API level 4 (Android 1.6 Donut) vous rencontrez des problèmes, ceci est dû au faite que les versions d'Android inférieures à 2.1 plantent quand il y'a dans votre classe des appels à des méthodes non existantes dans l'API 4, même dans le cas où vous faites pas appel à ce code, donc inutile de tester sur la version d'Android parce que votre application plantera dès que la classe est chargée dans la mémoire ! C'est triste non ?
Mais ne pleurez pas, ce problème disparaît à partir de l'API level 7, et surtout quand on vois qu'il reste uniquement 0.2% des terminaux qui tournent sous Android 1.6, finalement on se rend compte que la perte en terme de compatibilité est négligeable, vous pouvez voir ces statistiques ici :



J'espère que cet article vous sera très utile, à bientôt !

1 commentaire: