Développement Android
Développer une application ANDROID
Android est un système d’exploitation mobile Open Source pour Smartphone, PDA, MP3 et tablette. Il a été conçu par Android Inc puis racheté par Google en 2005. Quelles sont les différentes étapes d’un projet de développement d’applications Android ?
Partie 1 : Les bases indispensables à toute application
A- Environnement de développement Android
Pour développer une application Android, il est nécessaire de télécharger un kit de développement SDK (Software Development Kit) basé sur le langage JAVA. Une fois ce kit téléchargé, il faut ajouter un plugin sur Eclipse appelé ADT (Adroid Development Tools). Lorsque l’application est créée, il faut la poster sur Google Android Market. Il s’agira dès lors de développer plus précisément dans la partie qui suit les différents éléments nécessaires au développement d’une application Android.
B- Installation et configuration des outils
Le Java Development Kit (JDK) :
Le JDK contient le JRE qui permet d’exécuter les applications JAVA ainsi qu’un ensmeble d’outils pour compiler et déboguer le code.
L’IDE :
L’IDE est un logiciel qui permet de faciliter le développement. Il comprte généralement un ensemble restreint de langages. Il est possible de développer une application Android sans IDE, mais il est beaucoup plus pratique d’en utiliser un pour les raisons suivantes :
– L’auto-compilation
– Génération automatique de codes
– Des outils de compilation
– Deboguer
L’IDE le plus utilisé est Eclipse, mais il en existe de nombreux autres tels que IntelliJ IDEA ou NetBeans.
L’émulateur de téléphone (AVD)
L ‘AVD est un émulateur de terminal sous Android. Cette émulateur est très avantageux puisque nous n’avons pas besoin de périphérique sous Android pour tester nos applications.
Une application Android comporte plusieurs composants :
– Des activités : elles représentent l’implémentation métier dans une application Android.
– Des services : ils permettent l’exécution d’un algorithme qui s’arrête uniquement lorsque la tâche est terminée ou que son exécution est arrêtée. Contrairement aux activités, les services ne possèdent pas de vue.
– Des Broadcast et Intent Receivers : ils permettent d’écouter ce qui se passe sur le système et de déclencher des actions prédéfinies. Les services sont souvent lancés par ce mécanisme.
– Des content providers : permettent d’accéder aux données depuis l’application (par exemple aux contacts, photos..)
C – Cycle de vie d’une application Android :
Voici la description des différentes étapes du cycle :
– OnCreate : Cette méthode sert à initialiser une activité ainsi que toutes les données nécessaires a celle-ci. On met un Bundle en argument de la méthode qui contient l’état de sauvegarde enregistré lors de la dernière exécution de l’activité.
– OnStart : Cette méthode est appelé lorsque l’application et en arrière plan et qu’elle repasse en avant-plan. Si l’activité ne peut repassé en avant-plan, elle sera transférée à OnStop.
– OnResume : Cette méthode est appelée après OnStart, lorsque l’application repasse en avant-plan.
– OnPause : Cette méthode est appelée juste avant qu’une activité passe en OnResume. A ce stade, l’activité n’a plus d’accès à l’écran.
– OnStop : Appelée quand l’activité n’est plus visible quelle que soit la raison.
– OnDestroy : Appelée quand l’application est totalement fermée (Processus terminé).
D – Différence entre développement iPhone et Android
Voici les principales différences entre le développement d’une application Android et Iphone:
Un développement multi-plateforme ne pose pas de problème mais le rendu final n’est pas maitrisé puisque :
– L’Iphone ne possède qu’un bouton alors qu’Android en possède quatre.
– un « Spashscreen » est affiché au lancement d’applications iPhone mais pas sur Android
-L’iPhone offre plus de possibilités d’animation de transition entre les écrans.
Pour développer la même application en parallèle sur iPhone et Android, on trouve plusieurs possibilités :
– développer avec deux équipes différentes
– utiliser les méthodes agiles
De plus, pour développer un application Apple, le développeur a besoin d’un certificat délivré par Apple.
Ce certificat est matérialisé par quatre fichiers:
-CertificateSigningRequest.certSigningRequest
-developer-identity.cer
-Certificats.p12
-VotreNom.mobileprovision
Le développement d’une application Android est plus rapide.
Lors du développement d’une application Android, on utilise un emulateur alors que pour une application Iphone, le logiciel Xcode possède un simulateur.
Partie 2 : Création d’interfaces graphiques
Dans cette partie, nous allons étudier plus précisément les vues. Nous allons également voir comment créer des interfaces graphiques.
A- Constitution des interfaces graphiques
Eclipse est un bon outil qui nous permet de créer des interfaces graphiques pour des applications Android grâce à notre souris. C’est un outil qui s’avère plus pratique que le XML pour certaines manipulations de base; il permet par exemple de modifier les attributs d’une vue à la volée…etc. Par contre, cet outil est moins performant qu’un code et comporte plus de bugs.
C’est plus facile de créer une application avec Eclipse car il dispose de plusieurs options qui facilitent la création des icônes et permet de spécifier ses propriétés. On peut y spécifier le nom de l’application, la version android qu’on désir utiliser, la version minimum d’Android compatible avec l’application…etc.
B- Différenciation entre un layout et un widget
Les Layouts appelés gabarits en français sont des vues spéciales qui peuvent contenir d’autre vues et qui ne sont pas destinées à fournir un contenu ou des contrôles à l’utilisateur. Les layouts se contentent de disposer les vues d’une certaine façon. Les vues contenues sont les enfants, la vue englobante est le parent, comme en XML. Les layouts peuvent contenir d’autres layouts.
Contrairement aux Layouts, un Widget (composant en français) est une vue qui ne peut pas en englober d’autres vues. C’est un élément de base qui permet d’afficher du contenu à l’utilisateur ou lui permet d’interagir avec l’application. Chaque widget possède un nombre important d’attributs XML et de méthodes Java qu’on peut facilement retrouver sur la documentation officielle d’Android (http://developer.android.com/) .
Les Layouts peuvent contenir également d’autres Widget, c’est là toute la puissance de la hiérarchisation et la confection des interfaces.
C- Les types de widget
Les types de widget les plus utilisés sont :
→ TextView: C’est une vue qui permet d’afficher une chaîne de caractères que l’utilisateur ne peut modifier
→ EditText : Ce composant permet aux utilisateurs d’écrire du texte. C’est un TextView éditable
→ Button : C’est un simple bouton
→ CheckBox : Une case qui peut être dans deux états: cochée ou pas
→ RadioButton et RadioGroup: c’est comme une CheckBox mais l’utilisateur ne peut cocher qu’une seule case.
D- Les types de Layout
LinearLayout : Repose sur une idée de boite, c’est-à-dire que les conteneurs ou les widgets appartenant à ce Layout sont soit alignés en ligne horizontale ou verticale.. L’attribut pour préciser cette orientation est android:orientation. On peut lui donner deux valeurs (vertical et horizontal).
RelativeLayout: De manière totalement différente, ce layout propose plutôt de placer les composants les uns par rapport aux autres.
TableLayout : Permet d’organiser les éléments en tableau, comme en HTML, mais sans les bordures.
FrameLayout : Il plutôt utilisé pour afficher une unique vue. Cet attribut peut prendre trois valeurs :
ñvisible (View.VISIBLE), la valeur par défaut.
ñinvisible (View.INVISIBLE) n’affiche rien, mais est pris en compte pour l’affichage du layout niveau spatial (on lui réserve de la place).
ñgone (View.GONE) n’affiche rien et ne prend pas de place, un peu comme s’il n’était pas là.
Exemple de Layout :
E- Gérer les interactions entre interface graphique et utilisateur
Les listeners
Cliquer sur un bouton, entrer un texte… sont plusieurs façon d’interagir avec une interface graphique. Ces interaction sont appelées événements et sont détectables par des objets nommés listener. Un listener est une interface qui oblige l’utilisateur à redéfinir des méthodes de callback et chaque méthode sera appelée au moment où l’événement associé se produira.
Chaque événement est géré grâce à une méthode. Il existe plusieurs interfaces qu’on applique parmi elles L’interface View.OnClickListener. Elle permet d’intercepter l’événement « clique sur un bouton ». Cette interface contient la méthode de callbackvoid onClick(View vue). Le paramètre de type View est la vue sur laquelle le clic a été effectué, il sera appelée à chaque clic et qu’il faudra implémenter pour déterminer que faire en cas de clic.
F- Règles générales sur les vues
Comme en XML, une vue comporte des attributs qui permettent de moduler certains aspects. Parmi les attributs les plus courants on retrouve :
→ Layout_width : permet de définir la largeur que prend la vue
→ Layout_height : permet de définir la hauteur que prend la vue (la place sur l’axe vertical)
Ces deux attributs peuvent prendre une valeur parmi les trois suivantes :
→ match_parent : signifie qu’elle prendra autant de place que son parent sur l’axe concerné
→ wrap_content : signifie qu’elle prendra le moins de place possible sur l’axe concerné. En effet, la vue prendra exactement la taille d’une image si elle affiche une image
→ Une valeur numérique précise avec une unité
Les unités les plus utilisées sont :
→ dpoudip: Cette unité ne varie pas d’un écran à un autre comme le pixel ou le millimètre. Elle est indépendante de la résolution de l’écran. Elle ne varie pas d’un écran à un autre comme le pixel ou le millimètre.
→ sp : cette unité respecte le même principe, sauf qu’elle est adaptée pour définir la taille d’une police de caractères
Partie 3 : Les tâches de développement d’une application Android.
I – Story board :
Le story board désigne la phase de conception de l’application. Il s’agit en effet de définir des planches graphiques présentant les différentes pages de l’application ainsi que la navigation entre ces dernières. Cette étape est ainsi essentielle en vue d’assurer une ergonomie optimale à l’application, condition sine qua none pour permettre une utilisation fluide de l’application.
Elaborées en fonction du champ des possibles, ces planches visent à prédire l’ensemble des scenarii d’actions physiques que l’utilisateur peut réaliser pour accéder à telle ou telle fonctionnalité de l’application. Il s’agit dès lors pour le concepteur d’assurer une relation inversement proportionnelle entre le nombre d’actions à entreprendre pour l’utilisateur en vue d’accéder à une fonctionnalité de l’application et l’importance de cette dernière.
II – Les opportunités de réutilisabilité :
Les opportunités de réutilisabilité désignent la possibilité sous Android d’intégrer des fonctionnalités d’autres applications. En effet, via le mécanisme d’intention, Android permet à un concepteur de faire réaliser par d’autres applications certaines tâches à l’instar de le l’envoi de mail, le partage de contenu, l’utilisation d’images etc…
Réciproquement, le concepteur doit également se poser la question de la réutilisabilité de son application par d’autres éditeurs. Certains répertoires, le plus utilisé célèbre étant OpenIntents, listent et expliquent l’usage de l’ensemble des intentions réutilisables.
III – La recette :
A l’instar de tous les logiciels, une application sous Android est soumise à recette. Il s’agit dès lors de la tester sous différents terminaux, y compris bas de gamme ou de équipés de versions antérieurs du système d’exploitation, dans le but de déceler les éventuels bugs et de les éliminer.
La réalisation de recette intermédiaire est largement préconisée par les développeurs d’applications sous Android dans le but de corriger au plus tôt les problèmes d’incompréhension fréquents lors de la conception de logiciels.
IV – La distribution :
Contrairement à d’autres écosystèmes d’applications, l’environnement d’Android permet une distribution simplifiée. En effet, il n’y a pas de modération a priori des applications. Ainsi, pour mettre en ligne, le concepteur a simplement l’obligation de se créer un compte Google Android Market (coûtant 25$) puis de poster le fichier d’installation qui doit être signé.
Il doit dès lors préparer un texte explicatif, choisir les pays où sera disponible son application, faire deux captures d’écran et enfin choisir la catégorie où cette dernière sera mise en avant.
Le développeur doit toutefois veiller à conserver le fichier d’entrepôt des clés en vue de proposer des versions améliorées de l’application ultérieurement. Les applications ne sont pas soumises à modération lors de leur mise ne ligne dans l’Android Market, cependant Google se réserve le droit de supprimer une quelconque application contre laquelle des plaintes ont été déposées.