Les projets Android

Introduction

La structure d’un projet Android peut être assez complexe. Dans cette page, je tâcherai de vous expliquer les différents aspects importants dans un projet Android.

Création d’un nouveau projet

Pour créer un nouveau projet, appuyez sur le bouton « Start a new Android project » si vous êtes sur l’écran d’accueil d’Android Studio, ou sélectionnez le menu « File->New->New Project… ».

Ensuite, sélectionnez le type d’activité que vous souhaitez faire pour votre activité par défaut. Nous verrons ce qu’est une activité Android plus tard dans le cours. Il est toujours possible de passer d’un type d’activité à un autre en modifiant le code source de votre projet. Ça n’a donc pas beaucoup d’importance.

Ensuite, sélectionnez un nom d’application et nom de « Package ».

Le nom de « Package » est généralement lié au nom du domaine Web de l’entreprise ou du développeur qui crée l’application. Cette règle n’est pas obligatoire et dans le cas, ou vous n’aviez pas de nom de domaine, vous pouvez mettre un identificateur vous représentant. Par exemple, je pourrais mettre « marchandl.mon_application » si je n’avais pas de nom de domaine.

Ensuite, dans le cadre du cours, vous devez spécifier le langage de programmation à utiliser. La programmation Android de base peut se faire avec les langages Java ou Kotlin. Dans le câdre de ce cours, nous allons utiliser le langage Java.

Le dernier élément à prendre en compte, c’est l’API minimum du système. Pour cette valeur, je vous recommande de prendre un API assez ancien afin de supporter le maximum d’appareil et d’utilisateur. Également, nous allons voir plus loin qu’on peut mettre un API cible en plus d’un API minimum, ce qui nous permettra d’avoir plus de fonctionnalité, sans avoir à restreindre les utilisateurs avec des appareils anciens.

La structure des répertoires

Le répertoire racine du projet contient des scripts et des fichiers de configurations du système de compilation Gradle. Peu d’information de ce répertoire peut vous être utile dans le cours. Par contre, les fichiers scripts « gladlew » et « gladlew.bat » sont des scripts pouvant être utilisés en ligne de commande et qui peuvent vous permettre de compiler votre projet sans nécessiter l’utilisation d’Android Studio; ce qui peut être très utile si vous utilisez un serveur de compilation ou un service d’intégration continue. Également, le répertoire « gradle » contient des fichiers de configuration et des librairies nécessaires au bon fonctionnement du système de compilation.

Le répertoire « app » contient les fichiers et répertoire qui vous seront utiles en tant que programmeur.

Le répertoire « libs » contient les librairies Java (et parfois natives) qui permettent de bien faire fonctionner le code source qui se trouve dans le répertoire « src ».

Le fichier « build.gradle » est le fichier de configuration principal de votre application. Il peut être très intéressant d’explorer les différentes informations que ce fichier contient (ou peut contenir). Nous verrons cela plus bas. Le fichier « proguard-rules.pro » est utilisé par l’utilitaire « R8 » afin de faire de l’optimisation du programme, lors de la création du « package » d’installation. La configuration ProGuard n’est pas prévue dans ce cours, mais si c’est un aspect qui vous intéresse, vous pouvez voir la documentation à ici.

Le code source de l’application se trouve dans le répertoire « src ». Dans ce répertoire, on y trouve un répertoire « main » contenant le code source du projet, un répertoire « test » contenant des fichiers de test Java standard et un répertoire « androidTest », contenant des tests pour les modules Android.

Les 3 répertoires contiennent une structure de répertoire de vos « Package » Java. Il est important de noter que le système de « Package » de java est directement relié à la structure de répertoire. Par exemple, le fichier source de mon activité « main » se trouve dans le « Package » « me.louismarchand.mon_application » et se trouve donc dans le répertoire source du projet « me/louismarchand/mon_application ».

En plus des fichiers sources, le répertoire « main » contient les ressources utilisées dans l’application ainsi que le fichier « AndroidManifest.xml » qui est un fichier très important dans le développement Android. Nous verrons l’utilisation de ce fichier ainsi que des ressources plus tard dans le cours.

Il est à noter que tous ces fichiers sont accessibles directement dans l’éditeur Android Studio. Il n’est donc généralement pas nécessaire de naviguer cette structure de répertoires.

Le fichier « build.gradle »

Le fichier « build.gradle » permet entre autres de changer l’API minimal et l’API cible utilisé dans votre projet. Notez que les termes API et SDK sont souvent mélangés dans la technologie Android. Ils représentent presque la même chose et leurs numéros sont les mêmes (l’API 15 est implémenté par le SDK 15).

Le fichier « AndroidManifest.xml »

Ce fichier contient la configuration principale du code source du projet. On y retrouve des configurations comme: le nom et le nom de l’icône de l’application, l’activité principale à lancer lors de l’exécution de l’application, les activités de service de l’application, les permissions de l’application (caméra, avoir accès aux fichiers de l’utilisateur, calendrier, contacts, etc.) et bien d’autres.

Pour plus de détail sur ce que le manifeste Android peut contenir comme configuration, voir la documentation officielle ici.

Les fichiers de ressources

Dans le répertoire « res », on y trouve les ressources visuelles (par exemple: images), les informations de mise en page (layouts) ainsi que les différentes constantes utilisées dans l’application (par exemple, les chaines de caractères, les couleurs, etc.).

Une fois une ressource créée, ses éléments peuvent être accédés dans le code java en utilisant la référence retourné par le singleton « R » (nom très peu significatif à mon avis), ainsi que des fonctions comme « getRessource ». Par exemple, voici une constante texte appelé « bonjour » créé dans le fichier « strings.xml »:

Si je veux faire afficher cette valeur dans un Popup Android (appelé « Toast ») voici ce que je peux faire en Java (noter que tous le code permettant l’accès aux ressources se trouve dans la première ligne de l’exemple):

CharSequence lBonjour = getResources().getText(R.string.bonjour);
Toast lPopup = Toast.makeText(getApplicationContext(), lBonjour, Toast.LENGTH_LONG);
lPopup.show();

Voici le résultat en exécution (le « Toast » est pointé par la flèche rouge):

À propos des versions d’API

Malgré qu’il est généralement mieux de permettre l’utilisation de l’application au plus grand nombre de personnes, il peut arriver qu’une fonctionnalité soit souhaitée, pour les appareils qui peuvent le gérer. Par exemple, voici un bout de code qui permettrait d’exécuter une méthode particulière (« clearData ») dans le cas où l’appareil aurait trop peu d’espaces mémoire vive libres:

On voit que la méthode ne peut pas être exécutée sur les machines ayant un API inférieur à 19. Puisque notre API minimal est de 16, ce programme ne peut pas être compilé. Deux solutions s’offrent à nous pour régler cette erreur.

La première, dans le cas où la fonctionnalité est nécessaire au bon fonctionnement de l’application, il sera nécessaire de modifier le SDK minimal du projet afin de le monter à 19 (voir la section sur le fichier « build.gradle »).

La seconde solution est utilisable dans le cas où la fonctionnalité n’est pas nécessaire, mais tout de même intéressante à ajouté à l’application si l’appareil de l’utilisateur le permet. On peut donc encapsuler l’instruction fautive dans un « if », avec la condition:

if (Build.VERSION.SDK_INT >= API_NUMBER) {

Dans notre exemple, on pourrait faire:

Ou, pour enlever le « if » inutilement imbriqué:

Retour


Auteur: Louis Marchand
Creative Commons License
Sauf pour les sections spécifiées autrement, ce travail est sous licence Creative Commons Attribution 4.0 International.