0% ont trouvé ce document utile (0 vote)
14 vues52 pages

Android 8

Guillaume Gens présente l'évolution d'Android, un système d'exploitation pour smartphones développé par Google, en mettant en avant son architecture, ses défis de développement et son écosystème via l'Open Handset Alliance. Le document aborde également les caractéristiques techniques d'Android, les défis liés à la sécurité et à la confiance des utilisateurs, ainsi que les outils de développement disponibles pour les applications. Enfin, il décrit les différentes versions d'Android et les fonctionnalités qui les distinguent.

Transféré par

takwaafi7
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues52 pages

Android 8

Guillaume Gens présente l'évolution d'Android, un système d'exploitation pour smartphones développé par Google, en mettant en avant son architecture, ses défis de développement et son écosystème via l'Open Handset Alliance. Le document aborde également les caractéristiques techniques d'Android, les défis liés à la sécurité et à la confiance des utilisateurs, ainsi que les outils de développement disponibles pour les applications. Enfin, il décrit les différentes versions d'Android et les fonctionnalités qui les distinguent.

Transféré par

takwaafi7
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Guillaume GENS

[Link]@[Link]
Présentation

Guillaume Gens 2
Genèse
L'avant … … l'arrivé des nouveaux
● Fragmentation du marché ● Iphone Vs ...
Logiciel : Symbian, Windows mobile
Vision propriétaire


● Matériel : RIM, Palm
– Matériel : Foxconn
● Problème de Développement – Logiciel : Apple Inc.
● Portage J2ME – Catalogue : AppStore
– Configuration CLDC ● … mais révolutionnaire en soit !
– Profil MIDP
● Catalogue
● Android
– fonction de l'opérateur ● Vision ouverte
– non unifié (portage + test pour chaque Logiciel : source disponible

téléphone)
– Réservé aux éditeurs – Matériel : portage sur n'importe quel
matériel
– Catalogue : Android Market … sinon
=> Slogan de sun « write once, run développement séparé
everywhere » devient ● … révolutionnaire mais Apple est déjà
« write once, debug everywhere » ! passé !
Guillaume Gens 3
Android
● Système d'exploitation pour smartphone
● Noyau monolithique (linux)
● Machine Virtuelle (Dalvik)
● Développer & entretenu par Google
● 07/2005 rachat d'Android Inc. (Dalvik Vs J2ME)
● Libre & gratuit
● Multi-licence: GPL, BSD, Apache (libs android)
● Développement & publication d'applications

Guillaume Gens 4
Open Handset Alliance
● Initiative de Google 11/2007
● Consortium
● 34 compagnies => 65 maintenant !
– Opérateurs, Manufacteur, Fondeur, Logiciel
● « Ecosystème » (dixit Robert Scoble)
– En // de Symbian fundation, Limo fundation, OMA
● hétéroclites : Garmin, ebay, Windriver, Samsung
● … tous contre Apple, Microsoft, RIM, Palm, Nokia

Guillaume Gens 5
Android Market & contexte
économique
● Précédent d'Apple et de son Appstore (+100 000)
● Frein au premier achat : checkout Vs itune
● Partenariats avec opérateurs (T-mobile) + paypal ?
● Piratage plus facile (protection faible)
● Suffit d'avoir les bons droits (root)
● Moins facile avec « market licensing »
● Iphone plus difficile: jailbreak
● Rétractation 48 h => 15 min
● boudé par les éditeurs
● … bon mais moins restrictif que Appstore
Guillaume Gens 6
Android Market & polémiques
● Problème de confiance : éditeur & développeur Vs Google
● Rétractation utilisateur : 25 % (surtout jeux)
● Protection copie peu fiable (même après l'ajout de serveur de licence)
● Android projet « entièrement » libre?
● Licence apache : souple pour exploitation commercial
● Maps, Gmail, Market : source non dispo
● Rom alternative mal vu: le cas de « cyanogen »
● OHA … la nouvelle « clic » de l'open source dirigé par Google
● android + market spécifique pour Chine (OMS)
● Maintient le partenariat OHA après l'affaire de piratage

Guillaume Gens 7
Concours Android
● Android Developer Challenge 1 & 2
● ADC1: 70 appli gagnantes (surtout geolocalisation)
● ADC2: 40 appli gagnantes (surtout jeux)
● Bouygue & [Link]
● SFR
● DidUnozat : fiches mode d'emploi
● Samsung, vodaphone etc ...

Guillaume Gens 8
Architecture

Guillaume Gens 9
Historique des versions
Convention X.Y.Z + nom d'un gateau ( ordre alphabétique)
● 1.5 CUPCAKE (04/2009) --- Google I/O 2009 --- ● 2.3 GINGERBREAD (12/2010) Nexus S
● Mise en prod manufacteur (1er release sur tel) ● lib webM/VP8 codec x264 (Vs h264 de MPEG-LA)
● 1.6 DONUT (09/2009) ● Pile RFID norme NFC ( Nexus S )
● Affichage (layout) ● Google TV (version modifier d'android)

● 2.0 ECLAIR (10/2009) correctif 2.0.1 (12/2009) ● Amélioration d'appli (ex : Maps)
Android Market :
● Entreprise (VPN, bluetooth, Exchange) + notion Dock (home/car) ●

50 Mo par appli (limité à 10 avant)


● Google Navigation US –


Market filter (pre-teen,teen, mature, adult, all)
2.1 FLAN (01/2010) Nexus ONE
Retractation de 48h => 15 min


● Appli (+ amélioration) : Home, musique, Google Earth ● Orienté jeux Meilleur intégration SDK
● 2.2 FROYO (05/2010) --- Google I/O 2010 --- 3D (OpenGL ES): lib native + JNI => « renderscript »

● Appli sur SD ● X.X HONEYCOMB (05/2011) --- Google I/O 2011 ---
● Market : user: UI web / dev: rapport de bug + market licence + paypal ● Dédié au tablette?
● Tethering (modem 3G => wifi/usb) ● Nouvelle version de Compatibiliy Definition Document & Compatibility test
suite
● Google Navigation EU
… début de cycle de release annuelle (mis à part les correctif de sécurité)
● C2DM : envoie d'info depuis leur serveur vers toutes les appli device ●

(même non lancer) … => pour défragmentation sur long terme


● Support Adobe Flash 10.1 & AIR
● Dalvik machine : JIT !!! (Just-In-Time) => tout en plus rapide !
● … amélioration adSENSE : fonction avancé (géoloc, dynamique)
● tentative dé-fragmentation marché => Re-factoring source
– Compatibiliy Definition Document
– Compatibility test suite (windriver le faisait deja !)

Guillaume Gens 10
Anatomie
● Noyau linux
● 2.3 => 2.6.31
● Librairie libc (bionic)
● GPL => BSD
● + performante &
customisable
● VM dalvik
● Applications
services
Guillaume Gens Cf présentation google I/O 11
Dalvik Machine
● Optimisations : CPU, consommation, mémoire
● - 50% empreinte mémoire (Vs JAR)
● JIT (Just In Time)
● Support hard + lib graphique & média dédié
Librairie native

● Respect du principe du sandboxing ! (Vs iphone)
… mais surtout pour éviter les IP de Sun sur J2ME

Guillaume Gens 12
Initialisation

Guillaume Gens 13
SandBoxing

Guillaume Gens 14
App standard

Guillaume Gens 15
App avec Native Service

Guillaume Gens 16
App avec Native Daemon

Guillaume Gens 17
ARBORESCENCE SYSTEME

Guillaume Gens 18
SDK
Software
Developpement
Toolkit

Guillaume Gens 19
Présentation de l'IDE

● ECLIPSE (IBM)
● Perspectives
● Vues
● Plugins (bundle OSGI)

● Plugin ADT(GOOGLE)
● Lien avec la SDK

Guillaume Gens 20
Perspective JAVA
● Package Explorer
● Source Editor
● Java, XML
● Tabbed Views
● Console, Javadoc etc

Guillaume Gens 21
Perspective DEBUG
● Debug
● Variables,
Breakpoints, and
Expressions
● Source View
● Console and Tasks
Views
● Outline

Guillaume Gens 22
Perspective DDMS ( Dalvik Debug Monitor Server )
● Devices
● Emulator Control
● Threads, Heap, and
File Explorer
● LogCat

Guillaume Gens 23
Dérivé de l'IDE

Guillaume Gens 24
$PATH_ANDROID_SDK/
├── add-ons
│ └── google_apis-8_r01
Arborescence SDK
├── docs
├── market_licensing
├── platforms
│ └── android-8
├── samples
│ └── android-8
├── SDK [Link]
├── SDK [Link] (windows)
├── temp
├── tools
│ ├── adb
│ ├── android
│ ├── ant
│ ├── apkbuilder
│ ├── ddms
│ ├── dmtracedump
│ ├── draw9patch
│ ├── emulator hierarchyviewer
│ ├── etc1tool
│ ├── hierarchyviewer
│ ├── hprof-conv
│ ├── jet (windows)
│ ├── layoutopt
│ ├── lib
│ ├── mksdcard
│ ├── [Link]
│ ├── [Link]
│ ├── sqlite3
│ ├── traceview
│ └── zipalign
└── usb_driver (windows)

Guillaume Gens 25
Debuggage d'application
● Directement sur cible (via USB)
● Paramètres => Applications => cochez « sources inconnues »
● Paramètres => Applications => Développement => tout cochez
● AVD (Android Virtual device)
● Emulateur Qemu
● Choix : plateform, Skin, feature support
● Lancement
– Graphiquement : ./tools/android (ou dans eclipse : )
– Shell : ./tools/emulator <path_avd>
● Émulation d'appel, SMS, status de la com, geotag
● Pas de support audio, camera, bluetooth, etc...
● Choix du device au run/debug de l'appli
● support testeur UI Monkey (dans adb)
Guillaume Gens 26
Arborescence config AVD
$HOME/.android/
|-- [Link] [Link] :
|-- avd
| |-- emulator_NeverRun.avd [Link]=yes
| | |-- [Link] [Link]=160
| | |-- [Link]
| | `-- [Link]
[Link]=50M
| |-- emulator_NeverRun.ini [Link]=HTC_HERO
| |-- emulator_Run.avd [Link]=platforms/android-2.0/skins/HTC_HERO
| | |-- [Link]
| | |-- [Link] [Link].1=platforms/android-2.0/images/
| | |-- [Link]
| | |-- [Link]
| | |-- [Link]
| | |-- [Link]
| | |-- [Link]
| | `-- [Link]
| |-- emulator_Run.ini ./
| |-- emulator_AfterRun.avd |-- [Link]
| | |-- [Link]
| | |-- [Link]
|-- kernel-qemu
| | |-- [Link] |-- [Link]
| | |-- [Link] |-- [Link]
| | |-- [Link]
| | `-- [Link] `-- [Link]
| `-- emulator_AfterRun.ini
|-- [Link]
|-- [Link]
|-- [Link]
`-- [Link]
Guillaume Gens 27
Application

Guillaume Gens 28
IHM - Caractéristiques Matérielles
● Capteurs extéroceptifs ● Actionneurs
● proximité (IR) (cachées) ● touches classiques
● luminosité (on/off,son ...)
● accéléromètres x3 ● trackball, pad …
● magnétomètres x3 clavier ?
● gyroscopes x3 ● écran multi-touches
● APN (+ frontal)
(max 4 pts)
● GPS/A-GPS
● touches Android

● Capteurs proprioceptifs ● Interfaces


● Température, pression, ● LEDs, écran, vibreur
batterie etc …

Guillaume Gens 29
IHM - Caractéristiques Logicielles
● Reconnaissance gestuelle
● physique (via accéléromètre)
● Motif sur écran
● Reconnaissance vocale
● Reconnaissance d'image (ex:Goggle)
● Tag optique (flashcode/QRcode)
● Objet
● Facial
● Réalités augmentés
● Marqueur (AndAR)
● POI + GPS + tracking (Layar,wikitude)
● Text-to-Speech
Guillaume Gens 30
Nomadisme – Caractéristiques ...
… matérielles … logicielles
● 2G - ● Internet, webservice etc …
GSM/GPRS/EDGE
● 3G - UMTS/HSDPA
● 4G - LTE ( wimax )

● Échange de carte de visite


● Bluetooth ( Profil ) numérique
● … bientôt NFC ● Communication périphérique
( RFID actif/passif) ● … tags => ubiquitaire
environnement pervasive …
Guillaume Gens 31
Démo & Définitions UI
● Bureau ( 3, 5 , 7, 9 panneaux)
● Status Bar ( + volet de
notification)
● App Widget
● Expérience Utilisateur (Action)
● Focus
● BACK Key, HOME Key, MENU
Key, SEARCH key

Guillaume Gens 32
Démo & Définitions UI
Application (UI)
● Widget (Bouton , texte, editable etc...)

● Option Menu (appui MENU Key) => icon menu,


expanded menu

● Context Menu (opération sur la sélection appui


long)

● Submenu (issu de Option Menu et/ou Context


Menu )

● Toast (notification « splasher »)

● Dialogs box (progess bar, progress dialog, Alert


etc...)

Guillaume Gens 33
Arborescence d'un projet
● Le Manifest ./platforms/android-2.0/samples/Snake/
|-- [Link]
● Description de l'application |-- res
| |-- drawable
– Version, SDK, | | |-- [Link]
– Activity, Liens de com (intent & filtre) | | |-- [Link]
| | `-- [Link]
● Déclaration des ressources externes | |-- layout
– Permission (hard & soft) | | `-- snake_layout.xml
Instrumentation | `-- values

| |-- [Link]
● Les Ressources (dossier res) | `-- [Link]
|-- src
● drawable : images, icônes | `-- com
| `-- example
● layout : vue de chaque UI | `-- android
● values : donnée (ex:l18n) | `-- snake
| |-- [Link]
● Les sources (dossier src) | |-- [Link]
| `-- [Link]
● Code java (ex: activity) `-- tests
|-- [Link]
● + 2 fichiers généré par le plugin ADT |-- [Link]
● [Link] `-- src
`-- com
● [Link] (constante pour accès aux ressources) `-- example
`-- android
● Dossier assets contient d'autre fichier `-- snake
statique pour le déploiement `-- [Link]

Guillaume Gens 34
Composants applicatifs
● Activity
● Composant d'interface visuel (layout relié par le manifest)
● Code « d'interaction » avec utilisateur
● Services
● Code « background » (sans UI), intervalle de temps indéfini
● Broadcast receivers
● Recoit & réagit aux messages d'autres application et/ou Services
● Content providers
● Rend disponible données applicatifs hors de son propre contexte

=> communique par Intent (sandboxing)


Guillaume Gens 35
Cycle de vie d'une application
(Activity)
● Dans Main Activity
● Fonction des events
– => callback !
● Acces par heritage
(super.*)
● OnDestroy = reste le
processus,forcer:
– Android : finish /
finishActivity
– Brut ! [Link]

Guillaume Gens 36
Cycle de vie d'une application
(Service)
● … même Problème
onDestroy
● StopSelf /
[Link]

Guillaume Gens 37
Manifest ([Link])
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
package="[Link]"
android:versionCode="1"
android:versionName="1.0">

<application
android:icon="@drawable/icon"
android:label="@string/app_name
android:launchMode="singleInstance">

<activity android:name=".Main"
android:icon="@drawable/small_pic.png"
android:label="@string/coucouLabel"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="landscape"
>
<intent-filter>
<action android:name="[Link]" />
<category android:name="[Link]" />
</intent-filter>
<intent-filter>
<action android:name=".IMAGE" />
<data android:mimeType="image/jpeg" />
<category android:name="[Link]" />
</intent-filter>
</activity>

<service android:enabled="true" android:name=".MyService"/>

<provider android:enabled="true" android:name=".MyProvider">

</application>
<uses-sdk android:minSdkVersion="3"/>
</manifest>
Guillaume Gens 38
Layouts
<?xml version="1.0" encoding="utf-8"?>

Template UI XML
<LinearLayout
● xmlns:android="[Link]
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
● Fonctionnement des <TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

attributs par héritage android:text="Hello, I am a TextView" />


<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

● AbsoluteLayout à android:text="Hello, I am a Button" />


</LinearLayout>

proscrire

Guillaume Gens 39
Views

=> acces à chaque views via la classe [Link] et la fonction « findViewById »

Guillaume Gens 40
Intent
● Communication entre tout composants applicatifs => classe
intent !
● A la création on spécifie le type d'action (catégorie
optionnel) ACTION_CALL ACTION_SENDTO
● Données brutes ou les champs extra ([Link] + valeur)
● Type 'mime' des données échangées
● */* text/plain audio/* …
● … lancement « startActivity(intent) »

Guillaume Gens 41
Android … le polyglotte
● Android Scripting Environnement ( ASE )
– Shell, JavaScript (rhino), Jruby, Perl, Lua, Python
# CODE D'UN MOUCHARD ECRIT EN PYTHON EN 11 LIGNES
import android
from time import sleep # importation juste de la méthode sleep

droid=[Link]()
[Link]() # démarre le service de géolocation

while True:
loc=[Link]().result # lis la position GPS
if loc == [Link]().result: # test si c'est la meme position que la derniere
adress=[Link](loc['latitude'],loc['longitude']) # renvoie une adresse (pays,ville,rue etc...)
sendadress=[Link]['result'][0]['thoroughfare'].encode('utf8')# prend juste la rue. Conversion utf8 !!!!
[Link]('06xxxxxxx',sendadress) # envoie le nom de la rue par SMS
sleep(5) # … se reveillera dans 5 sec

● ActionScript (Adobe) depuis Froyo 2.2


– WebApps : RIA (RichInternetApplication) plugin flash browser
– Application : installation runtime AIR sur smartphone (dev flex 4 «burrito»)

Guillaume Gens 42
Publication
d'application

Guillaume Gens 43
Conditions Android Market
● Développeur
● Droit d'entrée : 1 fois 25 $ US via Google Checkout
● encaissement commande application : 48h de délai
● Différent délais de virement bancaire
● 30% de commission par application vendu
● Appli payante: certain pays ( ≠ appli gratuite: tous!)
● Prix non figée … pour s'aligner au prix de concurrent
● ATTENTION !!! bien activer la protection de copie
● Utilisateur
● 48h 15 min pour rétractation d'une commande
Guillaume Gens 44
Conseils ergonomiques &
techniques
● Soignez l'IHM
● Client souvent impatient, développer applications avec cette optique en tête
● Informer utilisateur de la progression de la tache en cours
● Utilisation d'onglets: structure la plus pratique et intuitive pour la navigation
● Ajouter option permettant d’arrêter l’application dans vos menu
● Sauvegarde de données sur SD Card ou par défaut mémoire interne
● possibilité d’effacer et/ou transférer données dans un menu « setting »
● Définir une politique de synchronisation des données
● temps de l'intervalle
● type/préférence de connexion (wifi,3G,bluetooth/VPN)
● Éviter processus en tâche de fond (ne pas perturber les appli prioritaire)
● « service » est la pour ca: inscription de l'application avec définition temporelle
● Faire attention à l'utilisation de ressource Hardware (consommation batterie)

Guillaume Gens 45
Conseils marketings
● Nom & Description significatif (éviter les rétractations)
● Feedback des commentaires pour MAJ (Pb compatibilité)

● Mettre en place SAV (blog, mail, wiki etc …)

● Androlib : vitrine web du market ! ( notation/commentaires/reviews )

● version évaluation gratuite : moins de fonctions ou bandeau pub

● applications avec abonnement (ex:boutique en ligne)


● acheter espaces publicitaires sur blogs spécialisés

● Revoir son prix à la baisse en cas de concurrence

● publier sur les autres market compatibles !!!

● AppsLib(Archos), SHOP4APPS (motorola), Camangi,

Guillaume Gens
SlideME(Geeks'Phone), Handango 46
● blog de conseils... [Link]
Android Market

Guillaume Gens 47
Conclusion

Guillaume Gens 48
PERSPECTIVES

● Extension de l'OHA
● Intégration de services
● Autre marché visé :
● Déjà : tablette,MID,Ereader
● téléphone fixe, set-up box, TV,
centrale domotique
● Netbook (Vs ChromeOS?)
● Automotive, Électro-ménager
● Militaire ??? (projet RATS
missile « patriot »)
Guillaume Gens 49
CONCLUSION
● Pourquoi android pour les entreprises (dev) ?
● Maintenance linux sans en payé le support
● Système souple ( multi-support )
● Avoir la garantie des bons choix technologique
– Futur M2M « web object » ?(capteur via Flash/HTML5)
– => une vision deja « web apps » de Google
● … ingénierie logiciel moindre => réduction des couts
● Pourquoi android pour les utilisateurs ?
● Garantie de retrouver la même interface
● Services Google SaaS (Cloud computing) : C2DM
Guillaume Gens 50
WEBOGRAPHIE
● Android developper: [Link]
● Google I/O : [Link]
● Chaines Youtube: AndroidDevelopers, AndroidTips, NexusOne
● Wiki trucs&astuces:
● [Link] (surtout sa FAQ)
● [Link] Et [Link]
● Divers blogs & forums français:
● [Link]
● [Link]
● [Link]
● [Link]
● [Link]
● [Link]
● [Link]
Guillaume Gens 51
Merci de votre
attention ...
Questions ?
[Link]@[Link]

Guillaume Gens 52

Vous aimerez peut-être aussi