Skip to main content

Introduction

Dans ce cours nous allons apprendre des développer des applications Android d'une façon moderne en utilisant Android JetPack.

Android JetPack

Android JetPack est un ensemble de librairies modernes mise à disposition par Google en plus du framework Android qui permettent d'augmenter le confort de développement et la qualité des applications pour les besoins usuels.

Installer Android Studio

Avec JetBrains Toolbox

Jetbrains Toolbox est un petit utilitaire très pratique qui permet d'installer et mettre à jours les logiciels JetBrains en un clic.

Installer Jetbrains Toolbox

Téléchargez et installez Jetbrains Toolbox

Installer IntelliJ

Exécutez JetBrains Toolbox puis faites un clic droit sur son icône dans la barre d'état système de Windows. Trouvez ensuite IntelliJ et Datagrip dans la liste des applications proposée. Cliquez sur "Install" et attendez la fin du téléchargement.

Avec Chocolatey

choco install AndroidStudio -y

Sans Jetbrains Toolbox ni Chocolatey

Téléchargez et installer via ce lien.

Créer un projet avec Android Studio

Lancez Android Studio et créez un nouveau projet. Séléctionnez "Empty Activity" comme template de projet :

Capture d’écran 2021-02-03 225556.png

Remplissez ensuite les caractéristiques de votre projet :

Capture d’écran 2021-02-03 225632.png

Structure du projet

La structure de notre projet est la suivante :

Capture d’écran 2021-02-04 182000.png

On retrouve tout d'abord le fichier Androidanifest.xml qui va contenir toutes les méta données de l'application, comme par exemple son nom son icone, ses permissions, etc ...

Ensuite dans le dossier java on va retrouver nos codes source Java. Ensuite dans le dossier res on va trouver toutes les ressources et assets de l'application :

    drawable : Images layout : Templates XML pour les vues mipmap : Icônes values :
      colors.xml : Constantes de couleurs strings.xml : Constantes chaines de caractère themes : Configurations des couleurs du thèmes

      Enfin, on a deux fichiers build.gradle qui permettent de configurer les dépendances et la génération de l'application.

      Configurer les bibliothèques JetPack

      Pour ajouter les librairies de Android JetPack, nous allons justement utiliser ces fichiers build.gradle.

      On va commencer par ajouter les versions des librairies que l'on utiliser dans des variables :

      def lifecycleExtensionVersion = '1.1.1'
      def butterKnifeVersion = '10.1.0'
      def supportVersion = '28.0.0'
      def retrofitVersion = '2.3.0'
      def glideVersion = '4.9.0'
      def rxJavaVersion = '2.1.1'
      def roomVersion = '2.1.0-rc01'
      def navVersion = '2.1.0-alpha05'
      def preferencesVersion = '1.1.0'
      

      Juste avante l'object dependencies.

      Maintenant nous allons rajouter les déclarations dans dependencies pour réellement importer les librairies :

      dependencies {
      
          implementation 'androidx.appcompat:appcompat:1.1.0'
          implementation 'com.google.android.material:material:1.1.0'
          implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
      
          // Libraries imports
      
          // Android
          implementation "com.android.support:design:$supportVersion"
          implementation "android.arch.lifecycle:extensions:$lifecycleExtensionVersion"
      
          // Butterknife
          implementation "com.jakewharton:butterknife:$butterKnifeVersion"
          annotationProcessor "com.jakewharton:butterknife-compiler:$butterKnifeVersion"
      
          // Room
          implementation "androidx.room:room-runtime:$roomVersion"
          implementation "androidx.legacy:legacy-support-v4:1.0.0"
          annotationProcessor "androidx.room:room-compiler:$roomVersion"
      
          // Navigation
          implementation "androidx.navigation:navigation-fragment:$navVersion"
          implementation "androidx.navigation:navigation-ui:$navVersion"
      
          // Material
          implementation "com.google.android.material:material:1.2.1"
      
          // Retrofit
          implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
          implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
          implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
      
          // RxJava
          implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion"
          implementation "io.reactivex.rxjava2:rxandroid:$rxJavaVersion"
      
          // Glide
          implementation "com.github.bumptech.glide:glide:$glideVersion"
      
          // Palette
          implementation "com.android.support:palette-v7:$supportVersion"
      
          // Preferences
          implementation "androidx.preference:preference:$preferencesVersion"
      
      
          testImplementation 'junit:junit:4.+'
          androidTestImplementation 'androidx.test.ext:junit:1.1.1'
          androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
      }
      

      Ensuite pour configurer le plugin de génération de code pour la navigation, rajoutez la ligne :

      plugins {
      	...
      	id 'androidx.navigation.safeargs'
      }
      

      dans l'objet plugins tout en haut du fichier. Ensuite, afin de pouvoir utiliser des fonctionnalités récentes de Java comme les streams et lambdas, nous allons ajouter l'objet suivant dans l'objet android :

      android {
      
      	...
      
          compileOptions {
              sourceCompatibility JavaVersion.VERSION_1_8
              targetCompatibility JavaVersion.VERSION_1_8
          }
          dataBinding.enabled = true
      }
      

      Voilà, c'est tout pour le build.gradle de l'app. Maintenez, ouvrez le fichier build.gradle du projet, et ajoutez la ligne suivante dans dependancies :

      classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0-alpha05"
      

      Voilà ! C'est tout pour la configuration Gradle. Maintenant vous pouvez faire File > Sync Project with Gradle afin d'impacter la configuration gradle sur le projet.

      La configuration de votre projet est maintenant terminée.