In01 - Programmation Android - 01 - introduction

Yann Caron
Yann CaronIngénieur en génie logiciel chez Skyguide à Skyguide
session sept 2014 Yann Caron (c) 2014 1
IN01
Programmation Android
01 – Introduction
Yann Caron
Avec l'aide de Jean-Marc Farinone
session sept 2014 Yann Caron (c) 2014 2
Présentations

Yann Caron

Skyguide (SCADA C/C++ et Java WinCC OA, SI C#.net /
SqlServer)

EICnam – Algoid

CyaNn74@gmail.com

Sur Developpez – http://caron-yann.developpez.com (pas encore
au niveau de JMDoudou )

Google+ (Yann Caron ou Algoid)

Et vous ?
session sept 2014 Yann Caron (c) 2014 3
Sommaire du cours

01 – Présentation d'Android

02 – La plateforme Android

03 – IHM Bases

04 – Databases

05 – Google Map

06 – Publication

07 – Techniques avancées
session sept 2014 Yann Caron (c) 2014 4
Sommaire - Séance 01

La plateforme

Historique et versions

Architecture, JAR vs DEX

Outils et IDE
➔
Eclipse – ADT
➔
Netbeans – NAndroid
➔
Android Virtual Device (AVD)
➔
Android Debug Bridge (ADB)
session sept 2014 Yann Caron (c) 2014 5
IN01 – Séance 01
La plateforme
session sept 2014 Yann Caron (c) 2014 6
La plateforme Android
 Android : système embarqué open source pour
smartphone, tablette, MP3
 Une startup rachetée en 2005 par Google
 Logo bugdroid (libre de droits CC BY 3.0)
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 7
La plateforme Android
 OHA (Open Handset Alliance)
➔
Consortium Google, opérateurs, constructeurs et
éditeurs logiciels
➔
Favoriser l'innovation sur les appareils mobiles
➔
Plateforme véritablement ouverte, complète
➔
Et... gratuite
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 8
IN01 – Séance 01
Historique et versions
session sept 2014 Yann Caron (c) 2014 9
La plateforme Android
 Noyau Linux
 Open source (Open Governance Index de 23 %
selon http://www.visionmobile.com)
 Site de référence :
http://developer.android.com
 Source : http://fr.wikipedia.org/wiki/Android
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 10
Versions
 1.0 : Connue des développeurs : fin 2007
 1.1 : Incluse dans le 1er téléphone, le HTC Dream
 1.5 : Cupcake : avril 2009
 1.6 : Donut : septembre 2009
 2.0 et 2.0.1 : à cause de nombreux bogues
 2.1 : Eclair : janvier 2010
 2.2 : FroYo (Frozen Yogourt) : mai 2010
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 11
Versions
 2.3 : Gingerbread (pain d'épice) : décembre 2010
 3.0 : Honeycomb (rayon de miel) : janvier 2011
 4.0 : Ice Cream Sandwich : version unifiée Smartphone,
Tablette et GoogleTV : octobre 2011
 4.1 : Jelly bean : juillet 2012
 4.2.2 : API 17 : février 2013
 4.3 : API 18 : juillet 2013
 4.4 : KitKat : novembre 2013
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 12
Parts des versions – mai 2014
 À étudier avant chaque projet
 Source :
http://developer.android.com/about/dashboards/index.html
session sept 2014 Yann Caron (c) 2014 13
Parts des résolutions et densités
session sept 2014 Yann Caron (c) 2014 14
Smartphone != ordinateur
 Android tire parti des particularités des smartphones :
➔
interface homme-machine adaptée (tactile, widget)
➔
divers modes : vibreur, sonnerie, silencieux, alarme
➔
notifications (d'applications, d'e-mails, de SMS, d'appels en instance)
de boussole, accéléromètre, GPS
➔
divers capteurs (gyroscope, gravité, accélération linéaire, baromètre)
➔
NFC, RFID (technologie de cartes à puce, HF courte portée)
➔
téléphonie (GSM) et réseau EDGE, 3G, 4G, etc.
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 15
Smartphone != ordinateur
 En plus de ce qu'on peut avoir sur un ordinateur :
➔
navigateur
➔
bibliothèques graphiques 2D, 3D (Open GL)
➔
base de données (SQLite, DB4O), applications de rendu
multimédia (audio, vidéo, image) de divers formats
➔
réseau Bluetooth et Wi-Fi
➔
Webcam, APN
 Et des outils et bibliothèques Java (XStream…)
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 16
Parts des versions d'OpenGL
 Projets en 3d : jeux, rendu
 LibGDX, AndEngine, Unity, ShiVa, etc.
session sept 2014 Yann Caron (c) 2014 17
Google Play
 Android Market est « né » le 22 octobre 2008
 Google Play viendra le remplacer le 6 mars 2012. Il fusionne
les autres services Google (VOD, musique, livres, bd, etc.)
 30 octobre 2013, Google Play compte 700 000 applications et
égalise avec l'app store d'Apple
 Les développeurs sont rémunérés 70 % contre 30 % qui
rétribuent Google
 Chaque nouveau développeur paie 25 $ comme frais de
dossier (une seule fois)
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 18
IN01 – Séance 01
Architecture, JAR vs DEX
session sept 2014 Yann Caron (c) 2014 19
Vue d'ensemble
session sept 2014 Yann Caron (c) 2014 20
Architecture
 Multiplateforme mais performant
➔
« Write once, execute everywhere » la philosophie du
langage Java
 Partie haut niveau (en bleu) du Java
 Partie bas niveau (en vert et rouge) du code
c/c++ compilé
 La Dalvik VM permet d'interpréter le code Java
session sept 2014 Yann Caron (c) 2014 21
Architecture partie Java
 La couche « Applications » : Android est utilisé dans un ensemble contenant
déjà des applications natives comme un client de mail, des programmes pour
envoyer des SMS, d'agenda, de navigateur web, de contacts personnels
 La couche « Application Framework » : cette couche permet au programmeur
de construire de nouvelles applications. Cette couche fournit la gestion :
➔
des Views (= IHM)
➔
des ContentProviders = l'accessibillité aux données des autres applications (ex. : les
contacts) et donc les partages de données
➔
des ressources = les fichiers non code comme les images, les écrans (Resource
Manager)
➔
des Notifications (affichage d'alerte dans la barre de titre)
➔
des Activitys = l'enchaînement des écrans
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 22
Architecture partie compilée
 La couche "Libraries" (bibliothèques) = couche logicielle basse
pour utiliser :
➔
les formats multimédia : images, audio et vidéo
➔
les dessins 2D et 3D, bitmap et vectoriels
➔
une base de données SQL (SQLite)
➔
l'environnement d'exécution (Android Runtime). Toute application est
exécutée dans son propre processus, dans sa propre Dalvik virtual
machine
➔
le noyau Linux sur lequel la Dalvik virtual machine s'appuie pour gérer le
multithreading, la mémoire. Le noyau Linux apporte les services de
sécurité, la gestion des processus, etc.
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 23
Dalvik Virtual Machine (DVM)
 Est la machine virtuelle Java pour les applications Android
 Conçue pour exécuter du code Java pour des systèmes ayant des
contraintes de place mémoire et rapidité d'exécution
 Exécute du code .dex (Dalvik executable) = des .class adaptées à
l'environnement Android
 Écrit par Dan Bornstein d'où le nom (= village islandais dont sont
originaires certains de ses ancêtres)
 A été choisi par Google, car une machine Android peut lancer
plusieurs instances de la DVM efficacement (comme en Java)
 Référence : http://en.wikipedia.org/wiki/Dalvik_virtual_machine
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 24
Dalvik Virtual Machine (DVM)
 Le code de la DVM est open source (Apache License 2.0) :
http://code.google.com/p/dalvik/
 Machine à registre (register based) vs Java, machine à pile (stack based)
 JIT (Just in time compiler) introduit avec Android 2.2
 Performances controversées (selon Oracle, 3x moins par rapport à
HotSpot). Facteur 100 avec une application native
 Un remplacement prévu. ART qui précompile le byte-code à l'installation.
➔
Inconvénient, des app plus volumineuses
➔
Un gain de performance non encore prouvé
 Android Asset Packaging Tool (AAPT) convertit les JAR en dex (dexer)
session sept 2014 Yann Caron (c) 2014 25
En détail
session sept 2014 Yann Caron (c) 2014 26
Encore plus en détail
session sept 2014 Yann Caron (c) 2014 27
IN01 – Séance 01
Outils et IDE
session sept 2014 Yann Caron (c) 2014 28
Installation
 Facilitée depuis fin 2012
 Installer JDK Java6 SE
 Télécharger l'ADT Bundle
depuis
 http://developer.android
.com/sdk
 Il inclut : Eclipse, le SDK
Android, le plugin Eclipse
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 29
La pile des outils
Slide original (c) JMF
JDK Java 6 SE
SDK Android ADT
Plugin
Eclipse
AVD
ADB
AAPT
session sept 2014 Yann Caron (c) 2014 30
Le SDK Android
 l'Android SDK (Software Development Kit) amène des outils :
➔
un environnement de développement
➔
une machine virtuelle Java adaptée : la Dalvik virtual machine
➔
un environnement debugueur DDMS (Dalvik Debug Monitor Service)
utilisant adb (Android Debug Bridge)
➔
un environnement de construction d'applications Android AAPT (Android
Asset Packaging Tool)
➔
des émulateurs de téléphones ou de tablettes AVD (Android Virtual
Device)
➔
et une énorme API (voir
http://developer.android.com/reference/packages.html)
Slide original (c) JMF
session sept 2014 Yann Caron (c) 2014 31
Eclipse
 Développement en Java
 Divers outils
➔
WYSIWYG
➔
File explorer
➔
Screen capture
➔
Threads, Heap
➔
Allocation tracker
➔
Profiler, etc.
session sept 2014 Yann Caron (c) 2014 32
IDE Autres
 Android Studio
➔
Solution de Google annoncée au Google IO 2013
➔
Basé sur Intellij IDEA
 Intellij IDEA (standalone)
 AIDE – Android IDE – Java, C++
➔
Solution tablette et smartphone
➔
Compatible avec les projets Android Studio
 Netbeans et NBAndroid
➔
Pas de WYSIWYG, certains aspects mal intégrés, en partie payant.
session sept 2014 Yann Caron (c) 2014 33
Outils indispensables

aLogCat

Un explorateur de fichiers

APK Manager, Advanced Task Killer

Un admin de bases de données SQLite

Optionnel : Google Analytics
session sept 2014 Yann Caron (c) 2014 34
Android SDK Manager
 Gestionnaire de
versions de
SDK centralisé
 Google fournit
les données au
format XML
session sept 2014 Yann Caron (c) 2014 35
Android Virtual Device (AVD)
 Multiplatforme : win,
Linux, macos
 Multirésolution
 Multi-os
 Mais plus lent qu'un
vrai device
 Senseurs émulés
session sept 2014 Yann Caron (c) 2014 36
AVD Manager
 Un gestionnaire des
émulateurs
centralisé
 Configurateur
 Accessible depuis
Eclipse
session sept 2014 Yann Caron (c) 2014 37
Android Debug Bridge (ADB)
 Outil en ligne de commande
 Un client/serveur (et service) dédié au développement
sur Android
 Server : start-server, kill-server, devices
 Shell : shell, logcat
 Data : install, pull, push
 Et bien d'autres :
http://developer.android.com/tools/help/adb.html
session sept 2014 Yann Caron (c) 2014 38
Logcat
 Un logger sur chaque device
 Accessible depuis ADT ou une app (aLogCat)
session sept 2014 Yann Caron (c) 2014 39
Logcat
 Filtre depuis Eclipse
 Recommandé
session sept 2014 Yann Caron (c) 2014 40
Fin
 Merci de votre attention
 Des questions ?
1 sur 40

Recommandé

Android wear par
Android wearAndroid wear
Android wearHoussem Lahiani
1.2K vues25 diapositives
Développement Android par
Développement AndroidDéveloppement Android
Développement AndroidFranck SIMON
27.7K vues528 diapositives
1 tours horizon par
1 tours horizon1 tours horizon
1 tours horizonSaber LAJILI
1.8K vues25 diapositives
Introduction a Android par
Introduction a AndroidIntroduction a Android
Introduction a AndroidMohamed-Wassim Youssef
1.6K vues50 diapositives
Hello droid par
Hello droidHello droid
Hello droidWiki Info Systeme
2.3K vues25 diapositives
Présentation et Initiative pour le développement Android par
Présentation et Initiative pour le développement AndroidPrésentation et Initiative pour le développement Android
Présentation et Initiative pour le développement Androidyounes ben tlili
1.7K vues37 diapositives

Contenu connexe

Tendances

Formation Android (Initiation à la programmation sous Android) par
Formation Android (Initiation à la programmation sous Android)Formation Android (Initiation à la programmation sous Android)
Formation Android (Initiation à la programmation sous Android)G²FOSS ENIT
1.5K vues38 diapositives
In01 - Programmation Android - 02 - android par
In01 - Programmation Android - 02 - androidIn01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - androidYann Caron
16.6K vues70 diapositives
Programmation Android - 08 - Android debug bridge par
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeYann Caron
226 vues20 diapositives
Cours android par
Cours androidCours android
Cours androidAd Hafsa
800 vues107 diapositives
Programmation sous Android par
Programmation sous AndroidProgrammation sous Android
Programmation sous AndroidOlivier Le Goaër
131.4K vues156 diapositives
Cours android 2016_partie1 par
Cours android 2016_partie1Cours android 2016_partie1
Cours android 2016_partie1Sabeur LAJILI
32 vues32 diapositives

Tendances(19)

Formation Android (Initiation à la programmation sous Android) par G²FOSS ENIT
Formation Android (Initiation à la programmation sous Android)Formation Android (Initiation à la programmation sous Android)
Formation Android (Initiation à la programmation sous Android)
G²FOSS ENIT1.5K vues
In01 - Programmation Android - 02 - android par Yann Caron
In01 - Programmation Android - 02 - androidIn01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - android
Yann Caron16.6K vues
Programmation Android - 08 - Android debug bridge par Yann Caron
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridge
Yann Caron226 vues
Cours android par Ad Hafsa
Cours androidCours android
Cours android
Ad Hafsa800 vues
01 programmation mobile - android - (introduction) par TECOS
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
TECOS1.6K vues
Initiation Android Niveau Débutant par Nadim GOUIA
Initiation Android Niveau DébutantInitiation Android Niveau Débutant
Initiation Android Niveau Débutant
Nadim GOUIA2K vues
Cours android user_interface_2016 par Sabeur LAJILI
Cours android user_interface_2016Cours android user_interface_2016
Cours android user_interface_2016
Sabeur LAJILI86 vues
Android pour les debutants par Amira Hakim
Android pour les debutantsAndroid pour les debutants
Android pour les debutants
Amira Hakim739 vues
Jug Lausanne Android Janvier2013 par jeromevdl
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
jeromevdl3.6K vues

Similaire à In01 - Programmation Android - 01 - introduction

Programmation Android - 01 - Introduction par
Programmation Android - 01 - IntroductionProgrammation Android - 01 - Introduction
Programmation Android - 01 - IntroductionYann Caron
460 vues40 diapositives
cours-android.pdf par
cours-android.pdfcours-android.pdf
cours-android.pdfmed_univ78
8 vues101 diapositives
Android Studio, premier contact par
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contactJasmine Conseil
560 vues28 diapositives
1-android.pdf par
1-android.pdf1-android.pdf
1-android.pdfFethiBenYahia1
27 vues48 diapositives
Gui android eclipse par
Gui android eclipseGui android eclipse
Gui android eclipseESPRIT
559 vues18 diapositives
Programmation Android - 02 - Android par
Programmation Android - 02 - AndroidProgrammation Android - 02 - Android
Programmation Android - 02 - AndroidYann Caron
391 vues68 diapositives

Similaire à In01 - Programmation Android - 01 - introduction(20)

Programmation Android - 01 - Introduction par Yann Caron
Programmation Android - 01 - IntroductionProgrammation Android - 01 - Introduction
Programmation Android - 01 - Introduction
Yann Caron460 vues
Gui android eclipse par ESPRIT
Gui android eclipseGui android eclipse
Gui android eclipse
ESPRIT559 vues
Programmation Android - 02 - Android par Yann Caron
Programmation Android - 02 - AndroidProgrammation Android - 02 - Android
Programmation Android - 02 - Android
Yann Caron391 vues
Analyse et optimisation des performances des applications Windows Phone 7.5 par Microsoft
Analyse et optimisation des performances des applications Windows Phone 7.5Analyse et optimisation des performances des applications Windows Phone 7.5
Analyse et optimisation des performances des applications Windows Phone 7.5
Microsoft521 vues
Ch1. Développement mobile par Haifa Chorfi
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobile
Haifa Chorfi160 vues
Initiation au développement mobile sous Android par Abdelkader Rhouati
Initiation au développement mobile sous AndroidInitiation au développement mobile sous Android
Initiation au développement mobile sous Android
Abdelkader Rhouati2.2K vues
.NET Microframework, les joies de l'électronique et du code pour tous par Microsoft
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
Microsoft481 vues

Plus de Yann Caron

Théorie des langages - TP - WellKnownText par
Théorie des langages - TP  - WellKnownTextThéorie des langages - TP  - WellKnownText
Théorie des langages - TP - WellKnownTextYann Caron
381 vues26 diapositives
Théorie des langages - 04 Théorie des langages par
Théorie des langages - 04 Théorie des langagesThéorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langagesYann Caron
984 vues53 diapositives
Théorie des langages - 03 - Principes et paradigmes par
Théorie des langages - 03 - Principes et paradigmesThéorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmesYann Caron
453 vues82 diapositives
Théorie des langages - 02 - Code gen par
Théorie des langages - 02 - Code genThéorie des langages - 02 - Code gen
Théorie des langages - 02 - Code genYann Caron
377 vues72 diapositives
Théorie des langages - 01.1 - Parcours d'arbres par
Théorie des langages - 01.1 - Parcours d'arbresThéorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbresYann Caron
318 vues22 diapositives
Théorie des langages - 01 - Compilation par
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationYann Caron
722 vues109 diapositives

Plus de Yann Caron(20)

Théorie des langages - TP - WellKnownText par Yann Caron
Théorie des langages - TP  - WellKnownTextThéorie des langages - TP  - WellKnownText
Théorie des langages - TP - WellKnownText
Yann Caron381 vues
Théorie des langages - 04 Théorie des langages par Yann Caron
Théorie des langages - 04 Théorie des langagesThéorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langages
Yann Caron984 vues
Théorie des langages - 03 - Principes et paradigmes par Yann Caron
Théorie des langages - 03 - Principes et paradigmesThéorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmes
Yann Caron453 vues
Théorie des langages - 02 - Code gen par Yann Caron
Théorie des langages - 02 - Code genThéorie des langages - 02 - Code gen
Théorie des langages - 02 - Code gen
Yann Caron377 vues
Théorie des langages - 01.1 - Parcours d'arbres par Yann Caron
Théorie des langages - 01.1 - Parcours d'arbresThéorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbres
Yann Caron318 vues
Théorie des langages - 01 - Compilation par Yann Caron
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - Compilation
Yann Caron722 vues
Théorie des langages - 00 - Introduction par Yann Caron
Théorie des langages - 00 - IntroductionThéorie des langages - 00 - Introduction
Théorie des langages - 00 - Introduction
Yann Caron424 vues
Algea - 04 - conclusion par Yann Caron
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusion
Yann Caron423 vues
Algea - 03 - ennemis par Yann Caron
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemis
Yann Caron140 vues
Algea - 02 - gemmes par Yann Caron
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmes
Yann Caron129 vues
Algea - 01 - hero par Yann Caron
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - hero
Yann Caron150 vues
ALGEA - 00 - introduction par Yann Caron
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introduction
Yann Caron89 vues
Programmation Android - Tp2 Travaux pratiques - Geomatique par Yann Caron
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - Geomatique
Yann Caron650 vues
Programmation Android - 10 - Spatialite par Yann Caron
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - Spatialite
Yann Caron560 vues
Programmation Android - 09 - Web services par Yann Caron
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
Yann Caron253 vues
Programmation Android 07 - Techniques avancées par Yann Caron
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancées
Yann Caron245 vues
Programmation Android - 06 - Publication par Yann Caron
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - Publication
Yann Caron283 vues
Programmation Android - 05 - Google map par Yann Caron
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google map
Yann Caron660 vues
Programmation Android - 04 - Databases par Yann Caron
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - Databases
Yann Caron256 vues
Programmation Android - 03 - IHM bases par Yann Caron
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
Yann Caron229 vues

In01 - Programmation Android - 01 - introduction

  • 1. session sept 2014 Yann Caron (c) 2014 1 IN01 Programmation Android 01 – Introduction Yann Caron Avec l'aide de Jean-Marc Farinone
  • 2. session sept 2014 Yann Caron (c) 2014 2 Présentations  Yann Caron  Skyguide (SCADA C/C++ et Java WinCC OA, SI C#.net / SqlServer)  EICnam – Algoid  CyaNn74@gmail.com  Sur Developpez – http://caron-yann.developpez.com (pas encore au niveau de JMDoudou )  Google+ (Yann Caron ou Algoid)  Et vous ?
  • 3. session sept 2014 Yann Caron (c) 2014 3 Sommaire du cours  01 – Présentation d'Android  02 – La plateforme Android  03 – IHM Bases  04 – Databases  05 – Google Map  06 – Publication  07 – Techniques avancées
  • 4. session sept 2014 Yann Caron (c) 2014 4 Sommaire - Séance 01  La plateforme  Historique et versions  Architecture, JAR vs DEX  Outils et IDE ➔ Eclipse – ADT ➔ Netbeans – NAndroid ➔ Android Virtual Device (AVD) ➔ Android Debug Bridge (ADB)
  • 5. session sept 2014 Yann Caron (c) 2014 5 IN01 – Séance 01 La plateforme
  • 6. session sept 2014 Yann Caron (c) 2014 6 La plateforme Android  Android : système embarqué open source pour smartphone, tablette, MP3  Une startup rachetée en 2005 par Google  Logo bugdroid (libre de droits CC BY 3.0) Slide original (c) JMF
  • 7. session sept 2014 Yann Caron (c) 2014 7 La plateforme Android  OHA (Open Handset Alliance) ➔ Consortium Google, opérateurs, constructeurs et éditeurs logiciels ➔ Favoriser l'innovation sur les appareils mobiles ➔ Plateforme véritablement ouverte, complète ➔ Et... gratuite Slide original (c) JMF
  • 8. session sept 2014 Yann Caron (c) 2014 8 IN01 – Séance 01 Historique et versions
  • 9. session sept 2014 Yann Caron (c) 2014 9 La plateforme Android  Noyau Linux  Open source (Open Governance Index de 23 % selon http://www.visionmobile.com)  Site de référence : http://developer.android.com  Source : http://fr.wikipedia.org/wiki/Android Slide original (c) JMF
  • 10. session sept 2014 Yann Caron (c) 2014 10 Versions  1.0 : Connue des développeurs : fin 2007  1.1 : Incluse dans le 1er téléphone, le HTC Dream  1.5 : Cupcake : avril 2009  1.6 : Donut : septembre 2009  2.0 et 2.0.1 : à cause de nombreux bogues  2.1 : Eclair : janvier 2010  2.2 : FroYo (Frozen Yogourt) : mai 2010 Slide original (c) JMF
  • 11. session sept 2014 Yann Caron (c) 2014 11 Versions  2.3 : Gingerbread (pain d'épice) : décembre 2010  3.0 : Honeycomb (rayon de miel) : janvier 2011  4.0 : Ice Cream Sandwich : version unifiée Smartphone, Tablette et GoogleTV : octobre 2011  4.1 : Jelly bean : juillet 2012  4.2.2 : API 17 : février 2013  4.3 : API 18 : juillet 2013  4.4 : KitKat : novembre 2013 Slide original (c) JMF
  • 12. session sept 2014 Yann Caron (c) 2014 12 Parts des versions – mai 2014  À étudier avant chaque projet  Source : http://developer.android.com/about/dashboards/index.html
  • 13. session sept 2014 Yann Caron (c) 2014 13 Parts des résolutions et densités
  • 14. session sept 2014 Yann Caron (c) 2014 14 Smartphone != ordinateur  Android tire parti des particularités des smartphones : ➔ interface homme-machine adaptée (tactile, widget) ➔ divers modes : vibreur, sonnerie, silencieux, alarme ➔ notifications (d'applications, d'e-mails, de SMS, d'appels en instance) de boussole, accéléromètre, GPS ➔ divers capteurs (gyroscope, gravité, accélération linéaire, baromètre) ➔ NFC, RFID (technologie de cartes à puce, HF courte portée) ➔ téléphonie (GSM) et réseau EDGE, 3G, 4G, etc. Slide original (c) JMF
  • 15. session sept 2014 Yann Caron (c) 2014 15 Smartphone != ordinateur  En plus de ce qu'on peut avoir sur un ordinateur : ➔ navigateur ➔ bibliothèques graphiques 2D, 3D (Open GL) ➔ base de données (SQLite, DB4O), applications de rendu multimédia (audio, vidéo, image) de divers formats ➔ réseau Bluetooth et Wi-Fi ➔ Webcam, APN  Et des outils et bibliothèques Java (XStream…) Slide original (c) JMF
  • 16. session sept 2014 Yann Caron (c) 2014 16 Parts des versions d'OpenGL  Projets en 3d : jeux, rendu  LibGDX, AndEngine, Unity, ShiVa, etc.
  • 17. session sept 2014 Yann Caron (c) 2014 17 Google Play  Android Market est « né » le 22 octobre 2008  Google Play viendra le remplacer le 6 mars 2012. Il fusionne les autres services Google (VOD, musique, livres, bd, etc.)  30 octobre 2013, Google Play compte 700 000 applications et égalise avec l'app store d'Apple  Les développeurs sont rémunérés 70 % contre 30 % qui rétribuent Google  Chaque nouveau développeur paie 25 $ comme frais de dossier (une seule fois) Slide original (c) JMF
  • 18. session sept 2014 Yann Caron (c) 2014 18 IN01 – Séance 01 Architecture, JAR vs DEX
  • 19. session sept 2014 Yann Caron (c) 2014 19 Vue d'ensemble
  • 20. session sept 2014 Yann Caron (c) 2014 20 Architecture  Multiplateforme mais performant ➔ « Write once, execute everywhere » la philosophie du langage Java  Partie haut niveau (en bleu) du Java  Partie bas niveau (en vert et rouge) du code c/c++ compilé  La Dalvik VM permet d'interpréter le code Java
  • 21. session sept 2014 Yann Caron (c) 2014 21 Architecture partie Java  La couche « Applications » : Android est utilisé dans un ensemble contenant déjà des applications natives comme un client de mail, des programmes pour envoyer des SMS, d'agenda, de navigateur web, de contacts personnels  La couche « Application Framework » : cette couche permet au programmeur de construire de nouvelles applications. Cette couche fournit la gestion : ➔ des Views (= IHM) ➔ des ContentProviders = l'accessibillité aux données des autres applications (ex. : les contacts) et donc les partages de données ➔ des ressources = les fichiers non code comme les images, les écrans (Resource Manager) ➔ des Notifications (affichage d'alerte dans la barre de titre) ➔ des Activitys = l'enchaînement des écrans Slide original (c) JMF
  • 22. session sept 2014 Yann Caron (c) 2014 22 Architecture partie compilée  La couche "Libraries" (bibliothèques) = couche logicielle basse pour utiliser : ➔ les formats multimédia : images, audio et vidéo ➔ les dessins 2D et 3D, bitmap et vectoriels ➔ une base de données SQL (SQLite) ➔ l'environnement d'exécution (Android Runtime). Toute application est exécutée dans son propre processus, dans sa propre Dalvik virtual machine ➔ le noyau Linux sur lequel la Dalvik virtual machine s'appuie pour gérer le multithreading, la mémoire. Le noyau Linux apporte les services de sécurité, la gestion des processus, etc. Slide original (c) JMF
  • 23. session sept 2014 Yann Caron (c) 2014 23 Dalvik Virtual Machine (DVM)  Est la machine virtuelle Java pour les applications Android  Conçue pour exécuter du code Java pour des systèmes ayant des contraintes de place mémoire et rapidité d'exécution  Exécute du code .dex (Dalvik executable) = des .class adaptées à l'environnement Android  Écrit par Dan Bornstein d'où le nom (= village islandais dont sont originaires certains de ses ancêtres)  A été choisi par Google, car une machine Android peut lancer plusieurs instances de la DVM efficacement (comme en Java)  Référence : http://en.wikipedia.org/wiki/Dalvik_virtual_machine Slide original (c) JMF
  • 24. session sept 2014 Yann Caron (c) 2014 24 Dalvik Virtual Machine (DVM)  Le code de la DVM est open source (Apache License 2.0) : http://code.google.com/p/dalvik/  Machine à registre (register based) vs Java, machine à pile (stack based)  JIT (Just in time compiler) introduit avec Android 2.2  Performances controversées (selon Oracle, 3x moins par rapport à HotSpot). Facteur 100 avec une application native  Un remplacement prévu. ART qui précompile le byte-code à l'installation. ➔ Inconvénient, des app plus volumineuses ➔ Un gain de performance non encore prouvé  Android Asset Packaging Tool (AAPT) convertit les JAR en dex (dexer)
  • 25. session sept 2014 Yann Caron (c) 2014 25 En détail
  • 26. session sept 2014 Yann Caron (c) 2014 26 Encore plus en détail
  • 27. session sept 2014 Yann Caron (c) 2014 27 IN01 – Séance 01 Outils et IDE
  • 28. session sept 2014 Yann Caron (c) 2014 28 Installation  Facilitée depuis fin 2012  Installer JDK Java6 SE  Télécharger l'ADT Bundle depuis  http://developer.android .com/sdk  Il inclut : Eclipse, le SDK Android, le plugin Eclipse Slide original (c) JMF
  • 29. session sept 2014 Yann Caron (c) 2014 29 La pile des outils Slide original (c) JMF JDK Java 6 SE SDK Android ADT Plugin Eclipse AVD ADB AAPT
  • 30. session sept 2014 Yann Caron (c) 2014 30 Le SDK Android  l'Android SDK (Software Development Kit) amène des outils : ➔ un environnement de développement ➔ une machine virtuelle Java adaptée : la Dalvik virtual machine ➔ un environnement debugueur DDMS (Dalvik Debug Monitor Service) utilisant adb (Android Debug Bridge) ➔ un environnement de construction d'applications Android AAPT (Android Asset Packaging Tool) ➔ des émulateurs de téléphones ou de tablettes AVD (Android Virtual Device) ➔ et une énorme API (voir http://developer.android.com/reference/packages.html) Slide original (c) JMF
  • 31. session sept 2014 Yann Caron (c) 2014 31 Eclipse  Développement en Java  Divers outils ➔ WYSIWYG ➔ File explorer ➔ Screen capture ➔ Threads, Heap ➔ Allocation tracker ➔ Profiler, etc.
  • 32. session sept 2014 Yann Caron (c) 2014 32 IDE Autres  Android Studio ➔ Solution de Google annoncée au Google IO 2013 ➔ Basé sur Intellij IDEA  Intellij IDEA (standalone)  AIDE – Android IDE – Java, C++ ➔ Solution tablette et smartphone ➔ Compatible avec les projets Android Studio  Netbeans et NBAndroid ➔ Pas de WYSIWYG, certains aspects mal intégrés, en partie payant.
  • 33. session sept 2014 Yann Caron (c) 2014 33 Outils indispensables  aLogCat  Un explorateur de fichiers  APK Manager, Advanced Task Killer  Un admin de bases de données SQLite  Optionnel : Google Analytics
  • 34. session sept 2014 Yann Caron (c) 2014 34 Android SDK Manager  Gestionnaire de versions de SDK centralisé  Google fournit les données au format XML
  • 35. session sept 2014 Yann Caron (c) 2014 35 Android Virtual Device (AVD)  Multiplatforme : win, Linux, macos  Multirésolution  Multi-os  Mais plus lent qu'un vrai device  Senseurs émulés
  • 36. session sept 2014 Yann Caron (c) 2014 36 AVD Manager  Un gestionnaire des émulateurs centralisé  Configurateur  Accessible depuis Eclipse
  • 37. session sept 2014 Yann Caron (c) 2014 37 Android Debug Bridge (ADB)  Outil en ligne de commande  Un client/serveur (et service) dédié au développement sur Android  Server : start-server, kill-server, devices  Shell : shell, logcat  Data : install, pull, push  Et bien d'autres : http://developer.android.com/tools/help/adb.html
  • 38. session sept 2014 Yann Caron (c) 2014 38 Logcat  Un logger sur chaque device  Accessible depuis ADT ou une app (aLogCat)
  • 39. session sept 2014 Yann Caron (c) 2014 39 Logcat  Filtre depuis Eclipse  Recommandé
  • 40. session sept 2014 Yann Caron (c) 2014 40 Fin  Merci de votre attention  Des questions ?