Développement Mobile Développement Mobile Natif Pour Android TP1 - Prise en Main
Développement Mobile Développement Mobile Natif Pour Android TP1 - Prise en Main
Développement Mobile Développement Mobile Natif Pour Android TP1 - Prise en Main
1. D’abord cochez Do not import settings : vous n’avez encore jamais travaillé avec
Android Studio, donc rien à importer.
2. Ensuite, cliquez sur le bouton Setup Proxy puis choisissez Auto detect proxy settings.
3. Choisissez installation de type Custom. Choisissez l’esthétique des fenêtres (sombre
ou clair). Puis confirmez l’emplacement du SDK Android qui est déjà installé dans
D:\android\sdk. Cliquez sur Ok et il vous affiche An existing Android SDK was
detected. . .. Il va vérifier que le SDK est complet. Tapez sur Next puis Finish et
attendez encore un peu.
La fenêtre principale d’Android Studio apparaît enfin, et elle apparaîtra directement les
prochaines fois
1
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Au tout début, vous n’aurez aucun projet Android. Dans la fenêtre d’accueil, choisissez Start à
new Android Studio project pour commencer à créer votre premier projet. Si internet n’est pas
activé dans la salle, il faudra attendre un peu.
Dans la première boîte de dialogue, choisissez le type d’application souhaitée. Il faut déjà
bien connaître celle que vous choisirez, car l’assistant va générer du code assez complexe.
Pour le TP1, choisissez Empty Activity ou ce qui y ressemble le plus (chaque version
d’Android Studio apporte de nombreux changements, il faut s’y habituer).
2
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Dans la seconde boîte de dialogue, on vous demande le nom de l’application, mettez TP1, son
paquetage Java : mettez fr.iutlan.tp1, l’emplacement du dossier à créer pour le projet.
3
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Ensuite, il faut indiquer le niveau d’API voulu, par exemple la 24. C’est la version minimale
que devront avoir les smartphones pour installer votre application : ils devront être au moins
aussi récents que cette API. Cela définit le niveau de fonctionnalités de votre application : s’il
est trop élevé, peu de smartphones seront capables de faire tourner votre application ; trop bas,
vous n’aurez pas beaucoup de fonctions agréables à votre disposition. Vous pouvez cliquer
sur Help me choose pour avoir un graphique de la distribution des versions d’API dans le
monde.
L’interface d’Android Studio est un peu déroutante au début. Vous verrez rapidement qu’on
ne se sert que d’une toute petite partie, vite apprise. Il y a des boutons tout autour de la fenêtre
: Project, Structure, Captures, Favorites, Build Variants, Terminal, Android Monitor,
Messages, TODO, etc. Ce sont des boutons à bascule, exclusifs entre eux sur un même côté,
qui affichent des onglets ; celui qui est actif est grisé. Par exemple dans l’image ci-dessous,
c’est l’onglet Project qui est ouvert.
La structure du projet est visible à gauche, comme dans Eclipse. Les fichiers sont arrangés de
manière pratique : manifeste, sources java et ressources, grâce au choix déroulant Android
juste au dessus. (NB: sur cette capture d’écran, les fichiers sont colorés car gérés par
subversion).
4
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Prenez quelques instants pour déplier les dossiers manifests, java et res et regarder ce qu’il y a
dedans.
3) Structure du projet
5
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
• Le dossier du projet contient le premier build.gradle, celui en vert qui indique les dépôts à
utiliser pour la compilation. Le fichier local.properties contient le chemin du SDK.
• Le dossier app contient le second build.gradle, celui en orange qui décrit les caractéristiques
du projet : API et dépendances.
• app/src/main/java contient les dossiers correspondant au package que vous avez déclaré,
avec les sources Java tout au bout du package.
• app/src/main/res/values contient les constantes du projet, dont les chaînes de caractères avec
toutes leurs traductions.
Ces fichiers n’apparaissent pas ainsi dans l’interface, ils sont regroupés autrement, à vous de
voir comment.
6
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
1) Gestionnaire de SDK
Ouvrez le gestionnaire de SDK en cliquant sur le bouton entouré en rouge (c’est une flèche
bleue descendante avec une moitié de robot vert)
Cochez Show Package Details pour voir tous les éléments installables : différentes machines
virtuelles, avec ou sans Google Maps, etc.
L’onglet SDK Tools montre les outils installés, par exemple Android Emulator, Android SDK
Tools. Ne vous inquiétez pas de ne rien y comprendre au début.
7
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
2) Contenu du SDK
• tools qui contient les outils de gestion du SDK et des AVD (emulator.exe),
• platform-tools qui contient quelques programmes utiles comme adb.exe (adb sous Linux)
Ces programmes sont des commandes qui sont normalement disponibles dans une fenêtre
appelée Terminal en bas d’Android Studio. En principe, vous devriez pouvoir taper adb dans
ce shell et ça vous affiche l’aide de cette commande. On va s’en servir un peu plus bas.
• system-images qui contient les images de la mémoire de tablettes virtuelles. Juste pour
comprendre pourquoi il n’y a que ça, regardez la taille des fichiers .img. Ce sont des images
de disques virtuels à lancer avec qemu.
8
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Commencez à créer un smartphone virtuel, avec le bouton + Create Virtual Device. Ensuite,
vous avez beaucoup de choix possibles. Le principe est de ne pas créer un smartphone virtuel
trop riche. Si le smartphone virtuel est trop puissant, trop gros (RAM et taille d’écran), il va
occuper énormément de place en mémoire et sur le disque. Vous pourriez vous retrouver à
court.
Un autre point important est le CPU du smartphone virtuel. Les vrais smartphones
fonctionnent en général avec un processeur ARM. Ça désigne un modèle de programmation
(registres et instructions) spécifiques qui doit être simulé sur votre ordinateur. Le mieux est de
choisir un AVD avec un processeur de type amd64 qui ne devra pas être simulé, mais
simplement lié, comme avec Docker ou VirtualBox.
Une solution prudente consiste donc à choisir l’AVD le moins rutilant. Par exemple,
choisissez le type Phone, modèle 5.1 480x800 en mdpi ; puis dans l’écran suivant, changez
d’onglet pour x86 images et choisissez une des API installées, la 27 Android 8.1 par exemple,
puis dans le dernier écran, activez Show Advanced Settings et changez la taille de la RAM :
au lieu de 343 Mo, mettez 512 Mo, et décochez Enable Device Frame. Validez la création de
ce smartphone virtuel.
La création d’un AVD prend du temps. Il faut générer l’image de la mémoire virtuelle, entre 1
et 4 Go. Une fois que c’est fini, l’AVD apparaît dans la liste et vous pouvez le lancer en
cliquant sur le triangle vert à droite. Notez qu’elle met également beaucoup de temps à
devenir disponible. Pour ne pas perdre de temps plus tard, vous devrez faire attention à ne pas
la fermer.
9
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
• Mettez-la en langue française : Language & Input, Language, ajoutez Français (France) et
mettez-le en premier dans la liste (c’est selon la variante d’Android que vous avez choisie),
• adb devices Affiche la liste des smartphones connectés : les réels par USB et les virtuels
actifs.
– ls : c’est une arborescence Unix, mais on n’a pas beaucoup de droits, on n’est pas root alors
il y a des erreurs dues aux protections.
– mkdir essais : crée un dossier sur la carte sd virtuelle (vérifiez la création avec ls).
• il faudrait trouver l’une des images d’arrière-plan de Windows, peut être dans
C:\Windows\Web\Wallpaper\Theme1 à vous de farfouiller pour trouver une image JPG
(attention le nom affiché ne correspond pas aux vrais fichiers, il faut cliquer sur la barre
d’adresse en haut de la fenêter). Ensuite faites par exemple adb push
C:\Windows\Web\Wallpaper\Theme2\img8.jpg /sdcard/Pictures : ça envoie l’image sur la
tablette, dans le dossier correspondant au stockage interne sdcard. L’image sera visible dans
l’application Google Photos.
Vous voyez la ressemblance de adb avec des outils comme telnet, ssh, ftp.
V. Programmation
1) Exécution
Le lancement de l’application est simple. Il suffit de cliquer sur le bouton triangulaire vert
dans la barre d’outils (celui qui est entouré en vert ci-dessous).
10
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Ensuite, s’il n’y a aucune tablette connectée ni AVD en cours, Studio vous demande quel
AVD il faut lancer. Il en faut un qui soit au moins du niveau d’API de votre application.
Cochez Use same device for future launches.
Ouvrir la fenêtre Android Monitor, onglet LogCat. NB: l’interface est légèrement différente
dans les nouvelles versions de Studio.
11
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Cette fenêtre permet de voir les messages émis par la tablette. Le bouton en forme de poubelle
vide ces messages. Vous pouvez changer le niveau d’affichage : verbose, debug, info. . . ou
créer un filtre basé sur le TAG pour ne voir que les messages utiles.
Lancez l’exécution du projet. Vous devriez voir une ligne similaire à celle-ci
3) Mise au point
Nous allons expérimenter quelques aspects du débogueur intégré dans Studio. On va être un
peu limités par la petitesse du programme. On va seulement pouvoir découvrir quelques
techniques très utiles : points d’arrêt et exécution pas à pas.
Normalement, il suffit de cliquer sur le bouton bleu pour lancer la mise au point.
Mais s’il y a une erreur de connexion (message Error running app: Unable to open debugger
port dans la barre d’état tout en bas), il faut d’abord « attacher » Studio à l’AVD. Il faut
cliquer sur le bouton Attach debugger to Android process entouré en fuschia ci-dessous. Vous
serez peut-être obligé(e) de relancer l’AVD.
12
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Voici, figure 12, les boutons utiles pour mettre le programme au point. Le bouton entouré en
vert permet de faire repartir le programme jusqu’au prochain point d’arrêt. Le bouton cyan
permet d’exécuter la prochaine ligne sans rentrer dans les méthodes imbriquées s’il y en a. Le
bouton orange entre dans les appels imbriqués de méthodes. Le bouton violet exécute à pleine
vitesse jusqu’à la sortie de la fonction puis s’arrête. Le bouton entouré en bleu foncé affiche
les points d’arrêt. Nous n’emploierons pas les autres boutons.
• Lancer en mode normal et attendre que ça se plante. L’exécution s’arrête alors exactement
sur l’instruction qui est mauvaise, par exemple celle qui déclenche une NullPointerException.
• Mettre un point d’arrêt avant l’endroit qu’on pense mauvais puis exécuter ligne par ligne
pour voir ce qu’il y a dans les variables et guetter l’erreur.
Cliquez dans la marge gauche au début de la méthode onCreate(). Ça place un gros point
rouge dans la marge.
13
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
La fenêtre Breakpoints, qu’on obtient en cliquant sur le bouton entouré en bleu foncé dans la
figure précédente, liste tous les points d’arrêts que vous avez placés. N’en mettez pas trop
dans un programme, vous aurez du mal à suivre tout ce qui peut se passer. Mettez vos
méthodes au point les unes après les autres, pas tout en même temps.
Lorsque le programme s’arrête, soit sur une erreur non prévue, soit sur un point d’arrêt,
Studio affiche la pile d’exécution (imbrication des appels de méthodes) dans la fenêtre Debug,
figure 14.
Le mot Frames désigne les appels imbriqués. Ils contiennent le nom de la méthode appelée,
ses paramètres et ses variables locales.
Une grande partie des appels ne viennent pas de votre application mais du système Android.
Un autre problème est qu’une application Android implique plusieurs threads. Parfois, il faut
arriver à comprendre quel thread plante. Ce n’est pas forcément <1> main comme ici. Ça sera
à choisir dans la liste déroulante juste sous le titre Frames.
14
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
15
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
Réglez LogCat pour n’afficher que des messages du niveau warn ou error.
Au lancement, cette application plante quand on clique sur le bouton. Cherchez l’exception
dans le LogCat. Il y a un lien à cliquer pour arriver sur la ligne coupable. Corrigez cette erreur
: mettez length-1 au lieu de length.
Ensuite, on voit que le programme ne fonctionne pas bien. Il ne plante plus mais ne semble
pas faire ce qui est attendu : permuter les valeurs affichées. Faites comme si vous ne
compreniez pas son fonctionnement. On va regarder vivre le programme en traçant son
exécution.
Mettez un point d’arrêt sur la première instruction de la méthode permutation (ou sur la
méthode elle-même), puis lancez en mode mise au point, et enfin cliquez sur le bouton de
l’application pour déclencher le point d’arrêt.
16
ISSAT Sousse Développement Mobile Dr. Ben Hassen H.
3éme Année licence 2021-2022
SI
Développement mobile natif pour Android
TP1 - Prise en main
d’une nouvelle méthode). Comme c’est un petit tableau, ses valeurs sont toutes affichées.
Déjà, on constate que l’ordre de ces valeurs est le même que sur l’écran de l’AVD, donc le
bug ne vient probablement pas de l’affichage.
Puis essayez les modes suivants, en surveillant les valeurs de tableau et de l’indice i de la
boucle :
• Instruction par instruction avec la touche F7 (step into) : elle rentre dans les appels aux
méthodes. Suivez les modifications des variables dans la fenêtre Variables. Voyez que la
variable dernier a pris la valeur de la dernière case du tableau. Ensuite, dans la boucle, vous
voyez que l’exécution entre dans la méthode recopierSurSuivant et l’exécute également pas à
pas.
Quand vous avez compris l’intérêt, vous pouvez couper court avec MAJ+F8 (step out) qui
exécute le reste d’une méthode à pleine vitesse jusqu’à sa sortie.
• Ligne par ligne : appuyer sur F8 (step over) pour exécuter la prochaine ligne. S’il y a un
appel à une méthode, il est fait à pleine vitesse. On se sert de ce mode quand on sait que les
sous-méthodes sont bonnes.
Supprimez l’exécution en cours à l’aide du bouton Stop app (carré rouge dans la barre d’outils
verticale à gauche).
17