Cyril Mottier

“It’s the little details that are vital. Little things make big things happen.” – John Wooden

Tutorial Android #1 : L'Arborescence D'un Projet Android

Avant de commencer cette première partie, il me semble utile d'expliquer en quoi va consister cette série de tutoriaux sur le développement Android. Ce projet vient d'une envie de partager ma passion du développement sur Android et d'une constatation évidente : les tutoriaux en français traitant de la programmation sur la plateforme Android ne sont pas légion. Possédant déjà un blog personnel sur Android, il me semblait intéressant d'élargir l'audience de ce genre de tutoriaux. C'est donc grâce à PointGPhone et son créateur Loïc Kempf (que je remercie) que j'espère motiver le plus possible de développeurs débutants.

La programmation sur Android commence tout d'abord par l'installation du SDK Android fourni par Google sur le site des officiels des développeurs. La rédaction d'une suite de tutoriaux sur le développement sur Android devrait tout naturellement contenir une partie introductive expliquant cette étape. Néanmoins, je n'ai pas souhaité inclure cette partie car elle est facilement réalisable et la documentation déjà existante est déjà suffisante :

Comme le mentionne le titre de cette partie, l'objectif de ce tutorial est de se familiariser avec l'arborescence type d'un projet Android. Nous étudierons donc les différents packages et dossiers qui sont automatiquement créé par le plugin ADT (Android Development Tool). Pour ce faire, crééons tout d'abord un premier projet avec l'EDI Eclipse. Lorsque vous faites File>New>Other>Android Project, une boite de dialogue comme représentée ci-dessous s'ouvre :

Cette boite de dialogue demande en réalité d'entrer plusieurs informations sur le projet :

  • Project Name : Ce nom de projet est totalement indépendant de votre application Android. Ce n'est en fait que le nom donné à votre projet dans Eclipse (nom donné au dossier dans votre workspace).

  • Package Name : Nom du package principal de l'application. Le nom du package suit, en général, la règle suivante : _extension_de_votre_domaine_._nom_du_domaine_.android._nom_du_projet_ (par exemple : com.cyrilmottier.android.tutorial). Le package définira en fait le nom interne de votre application sur le terminal Android.

  • Activity Name : C'est le nom de l'activité qui débutera au lancement de votre application. Dans une future partie, j'expliquerai le concept d'activité mais pour l'instant nous pouvons simplement considérer qu'une activité est la couche de présentation de votre application (concept d'écran). Ce nom d'activité sera automatiquement ajouté à votre AndroidManifest.xml (fichier qui décrit votre application au système Android et qui sera expliqué plus en détail dans la suite de ce tutorial)

  • Application Name : Pour finir vous devez entrer le nom de votre application. Cette chaine de caractère sera également inscrite dans AndroidManifest.xml et sera en fait utilisée par le système lors de l'affichage des applications dans l'écran d'accueil. C'est en réalité le nom de l'application affichée sous l'icône de l'application (nom utilisateur).

Note : Il n'y a aucune régle régissant et reliant les différents noms donnés ci-dessus. Vous pouvez en effet avoir un package com.cyrilmottier.android.aviation, un nom d'Activity MonChien et un nom d'application “Cuisinez !”. On remarquera néanmoins, que dans l'exemple précédent, malgré un choix fantaisique poussé à l'extrême des noms, la compréhension du projet n'est absolument pas facilitée.

Après avoir validé la boite de dialogue précédente en cliquant sur “Finish”, nous nous retrouvons maintenant en présence d'un projet type Android. Ce projet suit une arborescence bien précise qui ressemble à celle représentée ci-dessous :

Comme à l'accoutumée, Android ne déroge pas à la règle et insère donc les différents packages dans le dossier src. C'est dans ce dossier que l'ensemble des fichiers de code (.java) doivent se trouver. Il est bien sûr possible de créer de nouveaux packages comme les développeurs Java ont l'habitude de le faire. Analysons maintenant le contenu du package com.cyrilmottier.android.tutorial. On y retrouve tout d'abord un fichier PartOne.java qui n'est autre que l'activité (Activity) principale de l'application. Un simple coup d'oeil au code contenu dans le fichier montre que PartOne hérite bien d'Activity :

PartOne.java
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.cyrilmottier.android.tutorial;

import android.app.Activity;
import android.os.Bundle;

public class PartOne extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

En dessous du dossier src, on retrouve un fichier android.jar. C'est tout simplement ce jar qui contient l'ensemble du framework Android. Sans ce dernier, notre projet Android serait tout simplement une coquille vide.

On retrouve ensuite dans le package par défaut le fameux R.java. Ce fichier est automatiquement géré par ADT et n'est donc pas modifiable par l'utilisateur. Ce fichier contient en fait l'ensemble des références vers les ressources de votre projet. Imaginons par exemple que nous souhaitions utiliser une image (Drawable dans le langage Android), on y accèdera par R.drawable._nom_de_l_image_.

Au même niveau que le dossier src, on retrouve un dossier nommé assets et qui contient simplement des données qui seront chargées sur le mobile lors de la compilation de votre projet. Les données inclues dans ce dossier ne sont normalement pas en accord avec l'arborescence classique d'un projet Android : cela peut, par exemple, être des fichiers texte décrivant la licence de votre application, des fichiers audio ou vidéo, etc.

Un projet Android contient enfin un dossier res qui regroupe l'ensemble des ressources relatives au projet. C'est ce dossier qui est “lu” par ADT pour créer le fameux R.java. Ce dossier contient lui même des sous dossiers regroupant les ressources selon leur type. A la création d'un projet Android, les sous-dossiers créés sont :

  • drawable : regroupera l'ensemble de vos images (png, jpg, gif), Drawables, etc. On pourrait traduire ce dossier par l'expression (pas vraiment française) “dessinable”.

  • layout : le framework Android a l'avantage d'offrir une technique de création d'interfaces graphiques à l'aide de fichiers XML (on étudiera dans de futures parties que le concept a même été porté à l'extrême et qu'un grand nombre de classes peuvent être instanciées par XML) . C'est dans ce dossier que vous incluerez l'ensemble des fichiers décrivant vos interfaces.

  • values : ce dossier contient également un ensemble de fichiers décrivant les valeurs utilisées par votre application. On peut, par exemple, y mettre des chaines de caractères (strings.xml), des tableaux (arrays.xml), des couleurs, des dimensions, etc…

Pour finir, tout projet Android contient un fichier nommé AndroidManifest.xml qui définit le comportement de votre application au système Android. Ce fichier définit par exemple, le nom, l'icône (par défaut drawable/icon.png), le thème, la version minimale du système nécessaire à l'exécution de l'application, les activités, les services, etc. de votre application.