Académique Documents
Professionnel Documents
Culture Documents
Android - Semaine 1
1 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
Introduction
3 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
Qu’est-ce qu’Android ?
Android est une surcouche au dessus d’un système Linux :
Historique
5 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
6 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
7 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
Remarques diverses
8 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
Programmation d’applications
Applications natives
Une application native Android est composée de :
Sources Java (ou Kotlin) compilés pour une machine virtuelle
appelée « ART », amélioration de l’ancienne machine « Dalvik »
(versions ≤ 4.4).
Fichiers appelés ressources :
format XML : interface, textes. . .
format PNG : icônes, images. . .
Manifeste = description du contenu du logiciel
version minimale du smartphone,
fichiers présents dans l’archive avec leur signature,
demandes d’autorisations, durée de validité, etc.
Kotlin
C’est un langage de programmation « symbiotique » de Java :
une classe Kotlin est compilée dans le même code machine que
Java,
une classe Kotlin peut utiliser les classes Java et
réciproquement.
On peut mélanger des sources Java et Kotlin dans une même
application.
Kotlin est promu par Google parce qu’il permet de développer des
programmes plus sains. Par exemple, Kotlin oblige à vérifier chaque
appel de méthode sur des variables objets pouvant valoir null, ce
qui évite les NullPointerException.
11 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
En Kotlin :
fun getNomComplet(p: Personne): String {
return p.prenom+" "+p.nom
}
var p1: Personne = getPersonne() // retour null interdit
println(getNomComplet(p1)) // ne se compile pas
12 / 61 Pierre Nerzic
Android - Semaine 1
Introduction
14 / 61 Pierre Nerzic
Android - Semaine 1
SDK Android et Android Studio
15 / 61 Pierre Nerzic
Android - Semaine 1
SDK Android et Android Studio
16 / 61 Pierre Nerzic
Android - Semaine 1
SDK Android et Android Studio
Android Studio
17 / 61 Pierre Nerzic
Android - Semaine 1
SDK Android et Android Studio
SDK Manager
18 / 61 Pierre Nerzic
Android - Semaine 1
SDK Android et Android Studio
Choisir celles qui correspondent aux tablettes qu’on vise, mais tout
n’est pas à installer : il faut cocher Show Package Details, puis
choisir élément par élément. Seuls ceux-là sont indispensables :
Dossiers du SDK
20 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Première application
21 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Objectif de la semaine 1
22 / 61 Pierre Nerzic
Android - Semaine 1
Première application
23 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Modèle d’application
24 / 61 Pierre Nerzic
Android - Semaine 1
Première application
25 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Résultat de l’assistant
26 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Fenêtre du projet
27 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Éditeurs spécifiques
Formulaires pour :
res/values/strings.xml : textes de l’interface.
Éditeurs graphiques pour :
res/layout/*.xml : disposition des contrôles sur l’interface.
28 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Exemple res/values/strings.xml
29 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Exemple res/layout/main.xml
30 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Ces éditeurs sont beaucoup plus confortables que le XML brut, mais
ne permettent pas de tout faire (widgets custom et plantages).
Assez souvent, il faut éditer le source XML directement :
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
31 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Reconstruction du projet
32 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Gradle
Utilisation de bibliothèques
Certains projets font appel à des bibliothèques externes. On les
spécifie dans le build.gradle du dossier app, dans la zone
dependencies :
dependencies {
// support
implementation 'androidx.appcompat:appcompat:1.2.0'
// annotations
annotationProcessor 'org.projectlombok:lombok:1.18.16'
implementation 'androidx.annotation:annotation:1.1.0'
// fuites mémoire
debugImplementation 'com.squareup.leakcanary:leakcanary-andr
}
Les bibliothèques indiquées sont automatiquement téléchargées.
35 / 61 Pierre Nerzic
Android - Semaine 1
Première application
36 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Mises à jour
Google propose souvent des mises à jour : l’IDE, le SDK et Gradle.
Et aussi les build.gradle des projets.
Par exemple, ce build.gradle emploie une ancienne version de
Realm, il faudrait mettre 10.0.1 à la place de 7.0.8 :
buildscript {
repositories { ... }
dependencies {
classpath 'com.android.tools.build:gradle:4.1.1'
classpath 'io.realm:realm-gradle-plugin:7.0.8' // <-!
}
}
Android Studio affiche un avertissement s’il y a une mise à jour sur
les serveurs (repositories). Il faut alors éditer les numéros de version
manuellement, puis reconstruire le projet (sync now ou try again).
37 / 61 Pierre Nerzic
Android - Semaine 1
Première application
Première exécution
39 / 61 Pierre Nerzic
Android - Semaine 1
Première exécution
Exécution de l’application
41 / 61 Pierre Nerzic
Android - Semaine 1
Première exécution
42 / 61 Pierre Nerzic
Android - Semaine 1
Première exécution
43 / 61 Pierre Nerzic
Android - Semaine 1
Première exécution
45 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
Fenêtres Android
46 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
Fenêtre Logcat
Ils sont émis par les applications : debug, infos, erreurs. . . comme
syslog sur Unix : date, heure, gravité, source (code de l’émetteur) et
message.
47 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
Il est commode de définir des filtres pour ne pas voir la totalité des
messages de toutes les applications de la tablette :
48 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
void maMethode() {
Log.i(TAG, "appel de maMethode()");
Fonctions Log.* :
49 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
Logiciel ADB
Android Debug Bridge est une passerelle entre une tablette (réelle
ou virtuelle) et votre PC
50 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
Gestion du serveur
adb start-server : démarre le serveur,
adb kill-server : arrête le serveur,
adb devices : liste les tablettes connectées.
Exemple :
~/CoursAndroid/$ adb devices
List of devices attached
emulator-5554 device
c1608df1b170d4f device
~/CoursAndroid/$
51 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
Connexion à un shell
adb -s identifiant shell commande_unix. . .
exécute la commande sur la tablette
adb -s identifiant shell
ouvre une connexion de type shell sur la tablette.
52 / 61 Pierre Nerzic
Android - Semaine 1
Communication AVD - Android Studio
54 / 61 Pierre Nerzic
Android - Semaine 1
Création d’un paquet installable
55 / 61 Pierre Nerzic
Android - Semaine 1
Création d’un paquet installable
Paquet
56 / 61 Pierre Nerzic
Android - Semaine 1
Création d’un paquet installable
Lors de la mise au point, Studio génère une clé qui ne permet pas
d’installer l’application ailleurs. Pour distribuer une application, il
faut une clé privée.
Les clés sont stockées dans un keystore = trousseau de clés. Il faut
le créer la première fois. C’est un fichier crypté, protégé par un mot
de passe, à ranger soigneusement.
Ensuite créer une clé privée :
Création du keystore
58 / 61 Pierre Nerzic
Android - Semaine 1
Création d’un paquet installable
59 / 61 Pierre Nerzic
Android - Semaine 1
Création d’un paquet installable
Création du paquet
60 / 61 Pierre Nerzic
Android - Semaine 1
Création d’un paquet installable
Et voilà
61 / 61 Pierre Nerzic