Chapitre 1 Retour en arrière - Université de...

18
Chapitre 1 : Retour en arrière 1 Chapitre 1 Retour en arrière © Mohamed N. Lokbani 1.07 ProgrammaƟon mobile à plateforme libre Chapitre 1 : Retour en arrière 2 1. Difficultés de développer pour les systèmes embarqués Quelques contraintes à prendre en compte : - Mémoire: il y a moins de mémoire dans un téléphone intelligent que dans un PC. - Gestion des ressources: appel téléphonique pendant le déroulement d'une partie de jeu. - Optimisation pour une meilleure efficacité. - Taille de l'écran. - Disposition des éléments et accès à ces éléments (stylet, gros doigts, etc.). - Une variété de langues. © Mohamed N. Lokbani 1.07 ProgrammaƟon mobile à plateforme libre

Transcript of Chapitre 1 Retour en arrière - Université de...

Chapitre 1 : Retour en arrière 1

Chapitre 1

Retour en arrière

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 2

1. Difficultés de développer pour les systèmes embarqués

Quelques contraintes à prendre en compte :

- Mémoire: il y a moins de mémoire dans un téléphone intelligent que dans un PC.

- Gestion des ressources: appel téléphonique pendant le déroulement d'une partie de jeu.

- Optimisation pour une meilleure efficacité.

- Taille de l'écran.

- Disposition des éléments et accès à ces éléments (stylet, gros doigts, etc.).

- Une variété de langues.

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 3

2. Pourquoi Android?

Écouter les explications des concepteurs d'Android :

http://www.youtube.com/watch?v=6rYozIZOgDk

Le but de départ était de développer un système d’exploitation pour des camérasnumériques. Vu que le marché n’était pas assez large, le projet a été détourné pour lestéléphones intelligents.

L’idée était donc de créer un système d’exploitation capable d’avoir des outils pouvantinteragir avec l’environnement de l’utilisateur (prendre une photo et dire exactementl’endroit où elle a été prise).

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 4

3. La philosophie d'Android- Android est basé sur le système d'exploitation Linux.

- Android est un projet "Open source", distribué gratuitement.

- Le système est développé par l'alliance OHA (Open Handset Alliance) et Google.

http://www.openhandsetalliance.com/

http://fr.wikipedia.org/wiki/Open_Handset_Alliance

- Cette alliance regroupe :

* Opérateurs de téléphonie mobile

* Fabricants de semi-conducteurs

* Fabricants d'appareils

* Concepteurs de logiciels

* Sociétés responsables de la commercialisation

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 5

- Android permet le traitement d'une panoplie d'applications natives : téléphonie, courriel,agenda, GPS, multimédia, messagerie, etc.

- API Android est à la disponibilité de la communauté des développeurs. Ceci permetl'extension des applications.

- Google Play (Android Market) : est la plateforme sur laquelle un développeur peutvendre son application. Si l’intention est de vendre son application, un développeur doitpayer des droits d’accès de 25$, une fois lors de l’ouverture du compte. Le développeurreçoit dans ce cas 70% des revenus acquis.

- Ce n'est pas tous les pays qui peuvent vendre des applications sur Google Play :

http://fr.wikipedia.org/wiki/Google_Play

https://support.google.com/googleplay/answer/2843119?hl=en&rd=1

Des contraintes de copyright (films, séries télévision, livres, etc.) ou logistique (taxes,institutions financières, etc.).

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 6

4. L’historique d'Android

https://www.computerworld.com/article/3235946/android/android-versions-a-living-history-from-1-0-to-today.html

https://mindster.in/evolution-android

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 7

La répartition de l’installation des versions d’Android :

http://en.wikipedia.org/wiki/Android_version_history

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 8

Pour des statistiques sur un mois :

http://www.appbrain.com/stats/top-android-sdk-versions

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 9

http://developer.android.com/about/dashboards/index.htmlVersion Codename API Distribu on 2017 Distribu on 2018 Distribu on 2019

2.3.3 - 2.3.7 Gingerbread 10 1.0% 0.4% 0.2%

4.0.3 - 4.0.4Ice Cream Sandwich

15 1.1% 0.5% 0.3%

4.1.x

Jelly Bean

16 4.0% 1.9% 1.1%

4.2.x 17 5.9% 2.9% 1.5%

4.3 18 1.7% 0.8% 0.4%

4.4 KitKat 19 22.6% 12.8% 7.6%

5.0Lollipop

21 10.1% 5.7% 3.5%

5.1 22 23.3% 19.4% 14.4%

6.0 Marshmallow 23 29.6% 28.6% 21.3%

7.0Nougat

24 0.5% 21.1% 18.1%

7.1 25 0.2% 5.2% 10.1%

8.0Oreo

26 0.5% 14.0%

8.1 27 0.2% 7.5%

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 10

Les données ont été collectées sur 1 semaine, 26 octobre 2018.

Taille et résolution de l’écran

http://developer.android.com/about/dashboards/index.html

ldpi mdpi tvdpi hdpi xhdpi xxhdpi Total 2017 Total 2018 Total 2019

Small 0.3% 0.1% 1.2% 0.6% 0.4%

Normal 0.7% 0.3% 24.7% 41.9% 25.2% 87.6% 89.8% 92.8%

Large 2.0% 1.3% 0.4% 0.3% 0.5% 7.2% 6.4% 4.5%

Xlarge 1.5% 0.5% 0.3% 4.0% 3.2% 2.3%

Total 0.3% 4.2% 1.6% 25.6% 42.5% 25.8%

Normal : 470x320 dp, 480x800 hdpi, 640x960 xhdpi

http://stefan222devel.blogspot.ca/2012/10/android-screen-densities-sizes.html

https://developer.android.com/guide/practices/screens_support.html

https://material.io/devices/

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 11

https://www.allinmobile.co/know-how/android-screen-sizes-resolutions-why-screen-size-doesnt-matter/

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 12

5. La compétitionL'évolution des systèmes d'exploitation pour les mobiles :

http://www.xcubelabs.com/evolution-of-mobile-operating-systems.php

La part de marché pour chaque OS :

http://www.idc.com/prodserv/smartphone-os-market-share.jsp

La part de marché pour chaque vendeur :

http://www.idc.com/prodserv/smartphone-market-share.jsp

+ Apple (ios)

+ Microsoft (Windows)

+ BlackBerry (ex-RIM)

- Palm (WebOS)

- Nokia (Symbian)

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 13

http://gs.statcounter.com/vendor-market-share/mobile-tablet/worldwide/#monthly-201801-201901

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 14

http://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-201801-201901

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 15

http://gs.statcounter.com/vendor-market-share/tablet/worldwide/#monthly-201801-201901

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 16

http://gs.statcounter.com/platform-market-share/mobile-tablet/worldwide/#monthly-201712-201901

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 17

6. Java vs Kotlin2016 JetBrains lance la version 1.0 de Kotlin

2017 I/O Google annonce que Kotlin est un langage de premier ordre pour ledéveloppement d’application Android.

Depuis Kotlin gagne en popularité …

https://realm.io/realm-report/

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 18

Pourquoi?

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 19

Oui, mais ….

L’apprentissage, documentation, dépannage ….

Quel est votre niveau Java? Débutant?

Migration Java vers Kotlin? Le temps? Les coûts?

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 20

7. Android et outils de développement

- JDKhttp://www.oracle.com/technetwork/java/javase/downloads/index.html

- Android Studiohttp://developer.android.com/sdk/index.html

- Android SDKhttp://developer.android.com/sdk/index.htmlL'installateur d'Android Studio par défaut va installer aussi le dernier SDKdisponible.

- Ajouter les paquetageshttp://developer.android.com/sdk/installing/adding-packages.html

API : Nougat (25), Oreo (27) et Pie (28).

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 21

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Java

Android Studio SDK+ADT

Chapitre 1 : Retour en arrière 22

Il était possible d'utiliser Eclipse pour réaliser des applications Android.

- Eclipsehttp://www.eclipse.org/downloads/

- Android Development Tools (ADT) dans Eclipsehttp://developer.android.com/sdk/installing/installing-adt.html

- Avec le lancement d'Android Studio, Google a annoncé qu'elle cessait de mettre àjour le plug-in ADT utilisé dans Eclipse. Elle recommandait l'utilisation d'AndroidStudio.https://developer.android.com/studio/tools/sdk/eclipse-adt

ADT Plugin (UNSUPPORTED)

The Eclipse ADT plugin is no longer supported, as per this announcement in June 2015.

The Eclipse ADT plugin has many known bugs and potential security bugs that will not be fixed.

You should immediately switch to use Android Studio, the official IDE for Android. For help transitioning your projects, readMigrate to Android Studio.

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 23

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Installation

Plugins

AndroidStudio

SDKAndroid

Java

Chapitre 1 : Retour en arrière 24

8. Émulateur

Avantage : on peut simuler ce que l’on veut.

Inconvénient: on ne peut pas juger les performances (GPS?) ... ce n'est qu'un émulateuraprès tout. Il ne peut pas simuler non plus « Bluetooth », « NFC », « carte SD » et lesécouteurs.

Pour des tests réels, pas mieux qu’un vrai appareil, mais faites attention à la versiond’Android qu’il contient pour éviter d’être piégé.

Prendre en exemple le « Pixel 2, API 28 x86 », une carte mémoire de 100Mo.

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 25

9. Connecter son appareil

Besoin d’un driver?

http://developer.android.com/tools/extras/oem-usb.html

10. Se connecter à distance

- Ouvrir un terminal et se positionner dans le répertoire « android-sdks/platform-tools ».

- La commande « adb devices » liste tous les terminaux connectés à votre machine.

me:~$ adb devices List of devices attached

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 26

emulator-5554 device

- Ouvrir un shell à distance sur le terminal « adb –s emulator-5554 shell », où« emulator-5554 » est le nom du terminal.

- La commande « ls » pour connaitre les différentes commandes.

generic_x86:/ $ id uid=2000(shell) gid=2000(shell) groups=2000(shell),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc),3011(uhid) context=u:r:shell:s0

generic_x86:/ $ ls ls: ./ueventd.rc: Permission denied ls: ./ueventd.ranchu.rc: Permission denied ls: ./init.zygote32.rc: Permission denied ls: ./init.usb.rc: Permission denied ls: ./init.usb.configfs.rc: Permission denied ls: ./init.rc: Permission denied ls: ./init.ranchu.rc: Permission denied ls: ./init.environ.rc: Permission denied ls: ./init: Permission denied

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 27

ls: ./fstab.ranchu.early: Permission denied ls: ./fstab.ranchu: Permission denied acct bugreports cache charger config d data default.prop dev etc mnt oemproc root sbin sdcard storage sys system vendor

On n’a pas tous les droits, nous allons demander plus de privilèges, mais attention ...

127|generic_x86:/ $ su generic_x86:/ # id uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc),3011(uhid) context=u:r:su:s0

generic_x86:/ # ls acct bugreports cache charger config d data default.prop dev etc fstab.ranchu fstab.ranchu.early init init.environ.rc init.ranchu.rc init.rc init.usb.configfs.rc init.usb.rc init.zygote32.rc mnt oem proc root sbin sdcard storage sys system ueventd.ranchu.rc ueventd.rc vendor generic_x86:/ # exit

- Pour obtenir les privilèges « root » sur un émulateur, il faut installer sur ce dernierune image « Google APIs Intel x86 Atom System Image ». Il ne faut donc pas

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 28

installer l’image « Google Play Intel x86 Atom System Image ». Cette dernièreutilise une image de production d’un appareil donné. Les privilèges « root » sontverrouillés sur une telle image. Vous allez obtenir ce message d’erreur :

1|generic_x86:/ $ su/system/bin/sh: su: not found

- Il est possible d’accéder au privilège « root », en utilisant la commande « adb root ».

adb rootrestarting adbd as root

- La prochaine utilisation « adb » se fera en tant que l’utilisateur « root ». Pour sortirde cet état, il faut faire « adb unroot ».

adb unrootrestarting adbd as non root

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 29

- On se connecte à distance sur le terminal avec la commande « telnet » …

« telnet localhost 5554 » (où 5554 est l’identificateur du port de communication associé àvotre terminal).

me:~$ telnet localhost 5554Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.Android Console: Authentication requiredAndroid Console: type 'auth <auth_token>' to authenticateAndroid Console: you can find your <auth_token> in'/Users/me/.emulator_console_auth_token'OKauth 123456789ABCdefZAndroid Console: type 'help' for a list of commandsOKhelp

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 30

Cette approche est nécessaire depuis la version « 25.1.6 » :

SDK Tools, Revision 25.1.6 (May 2016)

Dependencies:

• Android SDK Platform-tools revision 23 or later.

General Notes:

• To improve the security of the Android Emulator and to address a reported security vulnerability, the Android Emulator Console now requiresauthentication before you can enter commands. Enter the auth auth_token command after you telnet to an emulator instance. auth_token must match the contents of the .emulator_console_auth_token file in your home directory.

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 31

- On envoie un message « sms send 5143436111 ceci est un test ».

- On peut même l’appeler ….

« gsm call 5143436111 »

Il y a quelqu’un?

- Si je veux transférer un fichier … patience!

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 32

11. Android Studio et quelques perspectives

Voir le chapitre en rapport avec une description détaillée d’Android Studio.

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 33

12. Constructeur de phrases ou « Phrazibus »

- Nous allons construire une application Android et la déployer sur l’émulateur« Nexus Pixel 2 ».

- L’exemple à utiliser est disponible ici :

http://www.iro.umontreal.ca/~lokbani/cours/ift1176/communs/Cours/ZIP/gui.zip

- La version « swing » de l’application est le fichier « Phrazibus7.java ». Profitez del’occasion pour jeter un œil attentif aux notes du cours associé à cet exemple.

- Une nouvelle version de ce fichier est disponible, compilée sous Java 8, sur le siteweb du cours « IFT1155 ».

- L’application « Phrazibus » a pour but de générer un ensemble de phrases.

- Chaque phrase doit-être composée obligatoirement d’un sujet, d’un verbe et d’uncomplément d’objet direct.

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 34

- Si cette contrainte n’est pas respectée, la phrase ne sera pas affichée.

- Nous ajoutons aussi un bouton qui permettra de remettre l’application à zéro afin deréaliser un test de nouveau.

- Voici le résultat obtenu en Java :

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre

Chapitre 1 : Retour en arrière 35

- Nous allons d'abord étudier les 3 approches algorithmiques associées à cetteapplication avant d'aborder le développement de l'interface Android. L'ensemble desfichiers est disponible dans le fichier compressé associé à ce chapitre.

© Mohamed N. Lokbani 1.07 Programma on mobile à plateforme libre