Universite de Carthage
FSEG Nabeul
3eme BIS/BI
TP1_ Android_Studio
Création d’un Projet sous Android Studio
1. Création d’un Projet
Pour créer un nouveau projet sous Android Studio, il faut choisir dans le menu de démarrage
Start a new Android Studio Project. La fenêtre suivante apparait. (suivant les versions d’android
studio, cette fenêtre peut apparaître en premier lieu ou en deuxième lieu).
La fenêtre ci-dessus présente les templates des fenêtres définies sous android, nous allons choisir
une fenêtre vide( empty activity) et cliquer sur Next.
Application Name: le nom de l’application
Package name: le schéma du package contenant le projet.
Save Location : répertoire de sauvegarde du projet.
Language :langage de développement java ou kotlin.
Minimum SDK : spécifie le SDK minimale sur lequel tourne l’application. Cliquez sur Finish.
2. Architecture du projet
Après création de votre projet android, vous obtenez l’architecture suivante:
Le manifeste
Le code
source en
Projet de
l’application Les ressources de
l’application
Le gradle de
l’application
Une application crée sous Android Studio se compose de plusieurs dossiers:
-Le dossier racine: représente votre application (nommé “app”).
-Le dossier manifests: contient le fichier manifeste de votre application (le fichier décrivant votre
application).
-Le dossier java: contient trois sous-packges, le premier contient le code source de votre
application (activité,service,…) et les deux autre contiennent le code source des tests.
-Le dossier res: sert à stocker toutes les ressources que vous utilisez dans votre application. Il
contient les sous-dossiers suivants:
a. drawable: contient toutes les images dans les différentes résolutions.
b. layout: contient toutes les vues.
[Link] ou icone adaptative : android 8.0 (API niveau 26) propose des icônes
de lanceur adaptatives, lesquelles peuvent afficher diverses formes sur différents
modèles d'appareils. Une icône de lanceur adaptative peut, par exemple, afficher
une forme circulaire sur un appareil OEM ( Original Equipement Manufacture) et
un carré avec des bords arrondis sur un autre appareil comme c’est montré par
la figure suivante :
[Link]: contient tous les fichiers contenant des données ou des valeurs
constantes (string, arrays, colors,….)
[Link]: contient les barres d’action de votre application
Gradle est un outil de construction de projets comme Make (projets C++ sur Unix), Ant (projets
Java dans Eclipse) et Maven. De même que Make se sert d’un fichier Makefile, Gradle se sert
d’un fichier nommé [Link] pour construire le projet.
C’est assez compliqué car AndroidStudio fait une distinction entre le projet global et
l’application . Donc il y a deux [Link] :
• un script [Link] dans le dossier racine du projet. Il indique quelles sont les dépendances
générales.
• un dossier app contenant l’application du projet.
• un script [Link] dans le dossier app pour compiler l’application.
Le Gradle Scripts: contient les scripts et configuration Gradle de votre application. Ces dossiers
correspondent à la vue Android du projet. Le fichier [Link] contient la liste des modules
que Gradle va prendre en charge. Par exemple, si nous avions 2
modules : app et secondmodule, le fichier [Link] contiendra :
1 include ':app', ':secondmodule'
Le fichier principal [Link] contient la liste des informations partagées entre tous nos
modules. Nous pouvons par exemple y retrouver la version de Gradle utilisée. Nous pouvons de
même définir des variables qui seront utilisables par tous nos sous-modules, tel que la version
minimum d’android supportée. Chaque module possède un fichier [Link], ses options de
compilation, ainsi que la liste de ses dépendances.
Un projet AndroidStudio est constitué ainsi :
.
+-- app/
| +-- build/ FICHIERS TEMPORAIRES
| +-- [Link] COMPILATION
| `-- src/
| +-- androidTest/ TESTS ANDROID
| +-- main/
| | +-- [Link] DESCR. DE L'APPLICATION
| | +-- java/ SOURCES
| | `-- res/ RESSOURCES
| `-- test/ TESTS JUNIT
+-- build/ FICHIERS TEMPORAIRES
+-- [Link] DEPENDANCES
`-- gradle/ FICHIERS DE GRADLE
3. Le fichier [Link]
Ce fichier est basique pour toute application, il contient au début de la création d’une application
le code xml suivant:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
package="[Link].hello_android_studio" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true" l’application permet le right to left
layout
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="[Link]" />
<category android:name="[Link]" />
</intent-filter>
</activity>
</application>
</manifest>
Ce code commence par le nom du package qui est défini par la balise package. Il spécifie ensuite
la description de l’application et de ses composantes dans la balise application. L’attribut
allowbackup indique si les données de votre application peuvent être sauvegardées puis
restaurées. L’icône, le nom et le thème de votre application sont spécifiés par les attributs icon,
label et theme. La balise activity décrit la fenêtre principale de l’application. La balise intent-
filter indique le filtre à placer, dans notre cas il indique que l’activité est l’activité principale de
l’application et que son catégorie est LANCHER et donc présente dans le lanceur d’application.
Les services, les permissions, les fournisseurs de contenue ajouté à votre application doivent être
définis dans ce fichier avec leurs balises spécifiques.
4. Les ressources
4.1 Les drawables
Il contient les icones et images de votre application dans les quatre résolutions (mdpi=résolution
moyenne, hdpi=haute résolution, xhdpi=très haute résolution, xxhdpi=très très haute résolution).
4.2 Les layout
Notre application contient une seule vue qui sert à afficher “HelpWorld”.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="[Link].hello_android_studio.MainActivity">
<TextView
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Dans notre cas le type de vue est Relative, d’autres types seront spécifiés dans le chapitre
suivant. Les attributs layout_width et layout_height definissent les dimensions du layout, le
match_parent veut dire que la vue prendra toute la taille de l’ativité. L’attriut padding définira les
marges d’affichage et l’attribut tools:context indique l’avtivité liée a la vue (context d’affichage).
Le TextView affiche une chaine de caractère déclarée dans le fichier [Link].
4.3 Values
Il contient les fichiers suivants:
-[Link]: contient tous les chaines utilisées dans l’application.
-[Link]: contient les différentes dimensions utilisées dans l’application (padding…)
-[Link]: contient le thème utilisée par l’application.
Ce répertoire peut contenir aussi les deux dossiers suivants :
Values-v21 : tous les fichiers contenus dans ce dossier remplacent les fichiers values par défaut
lorsque l’appareil possède une largeur minimum de 820dp (équivalent aux tablettes de 10
pouces)
4.4 Le fichier généré
C’est le fichier [Link], il est généré automatiquement par la pré-compilation des fichiers présents
dans le dossier ressources. Il ne faut jamais modifier ce fichier car vos modifications seront
perdues à la prochaine compilation. Il contient des références vers toutes les éléments présents
dans le dossier res(drawable, layut, string,..).
4.5 Le fichier de configuration
C’est le fichier Gradle, il contient la configuration de base de votre application et est composé
des sections.
apply plugin: '[Link]'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "[Link]"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('[Link]'),
'[Link]'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile '[Link]:appcompat-v7:25.1.0'
}
La section android spécifie les informations suivantes:
-la version API android utilisée pour la compilation de votre application.
-la version de l’outil de build utilisée.
-la configuration par défaut de votre application (identifiant de l’application, SDK minimale et
maximale, la version de l’application et le code de la version).
La section buildTypes permet de créer des archetypes de création de l’application. Ici l’archétype
release désactive l’utilisation de proguard. Le proguard est un outil permettant de réduire ,
d’optimiser et d’offusquer (caché ou empêcher de voire) le code d’une application. Le système
Gradle permet de réduire les ressources de l’application lors de sa génération. Ceci va permettre
de supprimer les ressources inutilisées ains que les bibliothèques dépendantes du package de
l’application. La section dependencies permet de spécifier les bibliothèques dont votre
application est dépendante.
5. Le code java de l’activité
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
}
}
notre classe hérite de la classe principale des activité à savoir AppCompatActivity et surcharge la
méthode OnCreate. Cette dernière définit le contenu de notre vue grâce à la méthode
setContentView.
L’annotation @Override doit être utilisée lorsqu’une méthode redéfinit la méthode de la
superclasse.
Le mot-clé super est utilisé pour appeler des fonctions définies sur l'objet parent.
La classe Bundle permet de créer et sauvegarder une zone mémoire contenant l’état de l’activité
(les valeurs de toutes les variables déclarées et traitées dans l’activité). Cette zone permet de
sauvegarder et restaurer l’état d’une activité lorsque l’utilisateur navigue entre les fenêtres.