Développement mobile sous Android TP1: Une première application avec un écran d accueil Fabien Teytaud teytaud@lisic.univ-littoral.fr Eric Ramat September 18, 2013 1 Description Dans ce TP nous allons écrire une première application sous Android. L un des principaux objectifs est de bien comprendre le fonctionnement d une activité. 2 Exercice 1 Dans un premier temps, on utilise Eclipse, les plugins de l environnement de développment Android d Eclipse et le SDK Android pour gérer le squelette de l application. 2.1 Etape 1 : création de l application A l aide du wizard Android, nous allons créér la structure de l application. A partir du Menu File New Project..., choisir le type Android Application Project. 1
L écran de création de l application nécessite plusieurs informations : Application Name : le nom de l application qui doit commencer par une majuscule et qui ne doit pas faire parti des applications proposer dans Google Play Project Name : le nom du projet ; par défaut, ce nom est identique au nom de l application Package Name : il faut respecter la strcuturation du code Java selon le modèle de package ; chaque classe de votre application doit se situer dans un package afin d éviter les problèmes de conflits de nom ; en général, le nom est du type org.<project_name> (dans notre cas, org.pepitmobil) Build SDK : le niveau d API Android avec lequel l application est compilée Minimum Required SDK : le niveau minimal d API requit (attention à bien le définir en fonction des classes et/ou méthodes utilisées dans votre projet) Par défaut, le projet va se créér dans votre workspace. 2
Si vous laissez l option Create custom launcer icon sélectionnée, alors une nouvelle fenêtre est proposée afin de désigner l icône représentant l application. Cette icône sera utilisée dans l outil de lancement d applications. Pour l instant, nous n allons pas activer cette option. A noter que la quasi-totalité des informations sont modifiables par la suite sauf le nom du projet qui est utilisé par Eclipse. L étape suivante consiste à définir l activité principale de l application. Par défaut, nous allons laisser BlankActivity. Cette activité est simplement liée à un écran très simple. 3
Ayant créé une activité élementaire, il faut maintenant lui demander un nom qui servira pour désigner la classe Java. Il faut aussi indiquer le nom de l écran (layout) associé à l activité. Un titre doit aussi être mentionné. Nous utiliserons, ici, le nom de l application. Il est aussi possible de définir un mode de navigation. Ce dernier n est possible que dans les versions récentes d Android. Nous resterons donc sans mode de navigation. De plus, notre activité va hériter de la classe android.app.activity de base. 4
La procédure de création est alors terminée. Le projet est généré dans le workspace, la classe MainActivity.java est créée dans le package org.pepitmobil. L écran via le layout activity_main.xml a été généré dans le répertoire res. Des icônes standards sont aussi présents dans le répertoire res. Plusieurs autres fichiers xml ont été générés dans les sous-répertoires du répertoire res. Nous y reviendrons plus tard. Pour finir, le fichier AndroidManifest.xml a lui aussi été généré et définit les éléments principaux de l application. 2.2 Etape 2 : compilation et exécution de l application Afin de vérifier que l application est valide, nous allons la compiler en faisant tout simplement Project Build Project puis l exécuter via le menu Run Run. La fenêtre Run as... vous demande alors sous quelle mode vous voulez exécuter l application. Dans notre cas, nous allons adopter le mode Android Application. Eclipse va alors lancer l émulateur Android (attention, c est très long! et surtout ne pas l éteindre après le test de votre application sinon il faudra la relancer). 5
Vous pouvez tester l application sur un périphérique Android que vous possédez si vous le désirez. Attention à le configurer en mode USB debugging depuis le menu Applications Development USB debugging. Pour cela, il faut connecter le périphérique en USB puis regarder les informations liées à votre périphérique en faisant dmesg dans un terminal. Deux informations sont à identifier : idvendor et idproduct. Dans l exemple, le périphérique est un téléphone HTC Desire S et les deux identifiants sont 0bb4 et 0cab. Il faut maintenant modifier (ou créer s il n existe pas) le fichier /etc/udev/rules.d/51- android.rules en ajoutant la ligne suivante : SUBSYSTEMS=="usb", ATTRSidVendor=="0bb4", ATTRSidProduct == 0cab, MODE="0666" Il est probable qu il faille relancer le démon udev pour que la définition soit prise en compte (/etc/init.d/udev restart). Utiliser un périphérique peut s avérer plus rapide et surtout plus pratique (réelles interactions avec le périphérique) que l émulateur. 6
Lors du lancement de l exécution, il est possible de choisir entre l émulateur et le périphérique connecté. 2.3 Etape 3 : quelques modifications La génération de code, c est bien mais maintenant tentons quelque modifications de l application. Exercice 1. Modifier le nom de la classe de l activité principale, au lieu de MainActivity, appelons la PepitMobilActivity. Le fichier et la classe doivent être modifiés. On peut utiliser les fonctions de refactoring d Eclipse pour cela. Il est aussi nécessaire de modifier le fichier AndroidManifest.xml. Recompilez et testez. Exercice 2. Modifier le texte qui apparait dans la fenêtre principale. On mettra le message Bienvenu dans l application PepitMobil. Pour cela, modifier directement le fichier main_activity.xml. Recompilez et testez. Exercice 3. Modifier l icône de lancement de l application. Récupérer ou créér rapidement une icône. Placer la dans le répertoire res (dans le bon répertoire en fonction de la résolution) et modifier le AndroidManifest.xml. Recompilez et testez. Exercice 4. Par défaut, seule la méthode oncreate est générée. Surcharger les méthodes couvrants le cycle de vie d une activité : void onsaveinstancestate(bundle outstate) void onrestoreinstancestate (Bundle savedinstancestate) void onpostcreate (Bundle savedinstancestate) void onrestart() void onstop() void onstart() 7
void onresume() Vérifier que toutes ces méthodes soient bien appelées à un moment donné et indiquer sous forme d un commentaire à quel moment ces méthodes sont appelées. 8