Cours 2 TDM
Cours 2 TDM
Cours 2 TDM
Nadia Elouali!
[email protected]
2018-2019
Chapitre II : Le développement d’application mobile :
Android Vs iOS
!
‣ La philosophie et structure
!
‣ Les différences techniques en développement d’application
!
La structure du projet
Le test de l’application
Les langages de programmation
!
‣ Le coût d’application et le mobile marketing
!
Le coût d’une application mobile
La monétisation de l'application
!2
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
‣ La philosophie et structure
!4
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
!5
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Les bibliothèques
• Ensemble de librairies écrites en C/C++, offrant les principaux services du
système d’exploitation
• WebKit fournit une fondation sur lequel on peut développer un navigateur
web. Media Framework permet le support des standards audio/vidéo/image.
Surface Manager permet de construire le rendu graphique,…
bibliothèque C (bionic)
développer par Google (elle
remplace la glibc de linux
(légère/rapide))
!6
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
L'environnement d’exécution
• Le Runtime Android écrit en C/C++ et Java, apporte le support Java à
travers la Dalvik VM et les librairies implantant les APIs Android (Core
Libraries)
• Dalvik exécute du bytecode qui est créé à partir de programmes écrits en
Java (ou Kotlin). Son temps d’exécution est deux fois plus rapide qu’avec des
machines Java standard.
!7
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
L'environnement d’exécution
!8
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Le framework
• Les composants applicatifs implantant les services de haut niveau : des API
permettant aux développeurs de créer des applications riches.
!9
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Le framework est une
Le framework
partie d’Android très
• Il fournit tout ce dont les applications complexe
peuvent avoir besoin :
!
• Activity Manager : gère le cycle de
vie des applications et maintient une
"pile de navigation" permettant
d'aller d'une application à une autre.
• Content Provider : c’est le système
qui permet le partage des données
entre les applications
• Location Manager (service
matériel) : permet l’utilisation du
GPS.
• etc.
!10 https://www.gamergen.com/dossiers/dossier-android-acrhitecture-118615-4
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Les applications
!11
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Les applications
!12
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Les applications
• Pour utiliser le mécanisme d’IPC (Inter Process Call), les applications créent
des intents (intentions).
‣ La philosophie et structure
Google ne livre pas toutes les informations concernant son système. Les
documentations sont rarement complètes et certaines API ne sont pas
documentées. Pourtant, avoir les documentations des API permettrait
une plus grande compréhension de l’architecture d’Android.
https://www.gamergen.com/dossiers/dossier-android-acrhitecture-118615-6 !14
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
!15
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Dernière version Pie (Android 9 - 06/08/2018)
‣ La philosophie et structure
!17
Le développement d’application mobile : Android Vs iOS
La structure du projet
!19
Le développement d’application mobile : Android Vs iOS
La structure du projet
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapplication">
Le nom de package doit être unique pour être publié sur le Google Play.
De plus, une fois l’application diffusée, il ne faut pas changez ce nom
puisqu'il agira comme un identifiant unique pour l’application.
!20
Le développement d’application mobile : Android Vs iOS
La structure du projet
• <application> est le nœud le plus important. Il décrit les attributs qui
caractérisent l'application et en énumère ses composants. Par défaut,
l'application n'a qu'un composant, l'activité principale.
L’icone de l’app
<application
Le nom de l’app
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" L’icone rond de l’app
Right-To-Left (RTL) layouts android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
Utiliser un style <intent-filter>
<action android:name="android.intent.action.MAIN" />
!
Une activité (page) <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
Activity principale
+ les permissions !21
Le développement d’application mobile : Android Vs iOS
La structure du projet
!23
Le développement d’application mobile : Android Vs iOS
• Les services sont des composants très proches des activités, mais ne
possèdent pas d'interface graphique : c'est pourquoi on les utilise pour
effectuer des travaux d’arrière-plan (lecture de musique, téléchargement,
etc.).
• Il existe deux types de services :
• Les plus courants sont les services locaux (unbound services),
où l'activité lance le service et le service appartiennent à la
même application.
• Les services distants (bound services) qui peuvent être lancés
par un composant qui appartient à une autre application.
Il est possible que le service soit local et distant à la fois. On peut lancer
un service local et lui permettre d'accepter les connexions distantes.
!24
Le développement d’application mobile : Android Vs iOS
https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !26
Le développement d’application mobile : Android Vs iOS
https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !27
!28
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Les fournisseurs de contenu
La structure du projet
(Content Provider)
Pour des raisons de sécurité on ne peut pas appeler nous même les méthodes
du fournisseur. Avec ce système, Android est certain qu’on a reçu les
autorisations nécessaires à l'exécution de ces opérations.
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Les fournisseurs de contenu
La structure du projet
(Content Provider)
• Pour accéder à un fournisseur on doit utiliser un URI
https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !29
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Les fournisseurs de contenu
La structure du projet
(Content Provider)
https://openclassrooms.com/courses/creez-des-applications-pour-android/le-partage-de-contenus-entre-applications !30
Le développement d’application mobile : Android Vs iOS
!31
Le développement d’application mobile : Android Vs iOS
• É v è n e m e n t s s y s t è m e : AC T I O N _ B O OT _ C O M P L E T E D,
ACTION_POWER_CONNECTED, ACTION_BATTERY_LOW, etc.
!32
Le développement d’application mobile : Android Vs iOS
Le test de l’application
BlueStacks Emulator
GenyMotion Emulator
Jar of Beans
Le test de l’application
!
• Par défaut on ne peut pas installer
des paquets ne provenant pas du Play
Store. Il faut donc avant tout
autoriser ces installations en rendant
dans la rubrique Sécurité des
paramètres d’Android. En bas de
cette rubrique, il faut cocher la case
Sources inconnues.
!35
Le développement d’application mobile : Android Vs iOS
Le test de l’application
!
• De plus, le terminal étant connecté
en USB, il faut autoriser l'ordinateur
à communiquer avec lui. Pour cela, il
faut cocher la case Débogage USB
dans la rubrique Options pour les
développeurs des paramètres.
!36
Le développement d’application mobile : Android Vs iOS
!37
Le développement d’application mobile : Android Vs iOS
• XML est utilisé en Android pour gérer l’affichage des contenus sur l’écran. Il
facilite le développement en permettant de séparer l’affichage des
algorithmes.
• Android est optimisé pour les appareils mobiles dotés d'une mémoire et
d'une puissance limitées. Il peut donc être étrange qu’il utilise le langage
XML. Après tout, XML, lisible par l'homme, n’est pas connu pour sa brièveté,
n'est-ce pas?
!39
Le développement d’application mobile : Android Vs iOS
!40
Le développement d’application mobile : Android Vs iOS
!43
Le développement d’application mobile : Android Vs iOS
• Le plugin Kotlin est embarqué dans Android Studio depuis sa version 3.0.
Sinon pour les versions antérieurs, on peut l’installer.
• Quelques fonctionnalités :
• ne plus avoir besoin de mettre des points virgules à la fin de chaque
instruction,
!44
Le développement d’application mobile : Android Vs iOS
• Quelques fonctionnalités :
• réduire les problèmes des nulls,
!45
Le développement d’application mobile : Android Vs iOS
• Quelques fonctionnalités :
• réduire les problèmes des nulls,
Elvis Operator ?:
• Quelques fonctionnalités :
• étendre des classes existantes (dans d’autres classes).
!47
Le développement d’application mobile : Android Vs iOS
• Quelques fonctionnalités :
• étendre des classes existantes, etc.
!48
Le développement d’application mobile : Android Vs iOS
!49
Le développement d’application mobile : Android Vs iOS
La monétisation de l'application
• Pour gagner de l'argent avec les moyens que met à disposition Google, il
faut tout d'abord créer un compte Google marchand. Pour cela, il faut
cliquer sur le lien « Ouvrir un compte marchand » dans la console du
compte développeur Android. Remplir toutes les informations (légalité,
raison sociale, etc.). Il faut ensuite associer un compte bancaire au compte
afin que Google puisse transmettre les paiements.
!50
Le développement d’application mobile : Android Vs iOS
La monétisation de l'application
• Le moyen le plus simple est de faire en sorte que les utilisateurs payent afin
de télécharger l’application sur Google Play. L'un des principaux avantages
des applications payantes est qu'elles permettent de se débarrasser des
publicités qui encombrent l’applications.
!
• Est-ce que les gens seraient prêts à payer pour les fonctionnalités
de l'app ?
• Prix ?
• Ajouter de la publicité :
• Une rémunération pour chaque clic
• Créer un compte sur AdMob (une régie qui fait le lien
entre les développeurs et les annonceurs)
• Insérer la bib « GoogleAdMobAdsSdk » dans l’app + les
permissions (internet/network) + adView (un ruban qui se
place sur les bords de l'application et qui affiche des
publicités)
Il faut par contre faire attention à l'interface graphique. Il vaut mieux qu'un
utilisateur ne clique jamais sur une publicité plutôt qu'il clique une fois
dessus par mégarde et supprime l'application en laissant une mauvaise
note/commentaire.
!54
Le développement d’application mobile : Android Vs iOS
La monétisation de l'application
https://openclassrooms.com/courses/creez-des-applications-pour-android/publier-et-rentabiliser-une-application
Utilisent-ils Oui
régulièrement
l’appli?
Est-ce que
l’app change de Oui Peuvent-ils
Non contenu? payer?
Oui
Non Non
Sont-ils prêts à
Non
payer un peu
tous les mois? Sont-ils prêts à
payer pour que
Oui l’app devient
Oui
plus complète?
Non
Application Produits
Abonnement Publicité
payante intégrés
Chapitre II : Le développement d’application mobile :
Android Vs iOS
!
‣ La philosophie et structure
!
‣ Les différences techniques en développement d’application
!
Les langages de programmation
La structure du projet
Le test de l’application
!
‣ Le coût d’application et le mobile marketing
!
Le coût d’une application mobile
La monétisation de l'application
!57
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
• iOS a été développé par Apple en 2007 lorsque le premier iPhone a été
développé.
• La société Apple ne délivre pas de licence du système d'exploitation pour
le matériel tiers
!58
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
• iOS :
• i : Ce préfixe a été introduit en 1998 pour le lancement de l'iMac
(ordinateur qui a relancé Apple alors au bord de la faillite). La lettre
a été principalement choisie à cause de la première lettre du mot
Internet.
• OS : Operating System
!59
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Ser vices et
technologies
sophistiqués
Ser vices et
technologies
fondamentales
!60
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Core OS
!61
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Core Services
• C'est la couche qui donne l’accès aux ressources fondamentales
nécessaires pour les applications
• Fonctionnalités systèmes :
!
• Local Authentication : permet l'authentification des utilisateurs à
l'aide de mots de passe ou de données biométriques.
!
• Protection de données : cryptage (terriblement efficace)
!
• In-App Purchase (gestion des achats intégrés)…
!62
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Core Services
• Frameworks :
!
• Core Foundation : permet d'accéder aux services du système
d'exploitation pour définir la couche de base des fonctionnalités
des applications.
• Accounts : sauvegarde les informations d'identification d'un
compte particulier, tel que Twitter par exemple. Les applications
utilisant ce framework peuvent utiliser ces données sans les
sauvegarder.
• Address Book : sauvegarder et/ou utiliser les contacts de l’utilisateur.
!63
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Media Layer
!64
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Cocoa Touch
!65
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Cocoa Touch
• Les caractéristiques clés :
!
• GameKit : des fonctionnalités pour créer de super jeux
(communication entre devices, interaction vocale, ajouter des amis,
etc.)
• EventKit : permet de créer, afficher et modifier des événements de
calendrier et de rappel
!66
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Cocoa Touch
• Les caractéristiques clés :
• Handoff (continuité) : permet aux utilisateurs de démarrer une
activité sur un appareil et de reprendre de manière transparente
l'activité sur un autre appareil (extension de la UX entre les
appareils)
!
• AirDrop: permet de partager les photos, vidéos, documents avec
d'autres appareils Apple à proximité.
!67
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
!68
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
Mars Juillet Juin Juin Oct Sept Sept Sept Sept Sept Sept
2008 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
Sept 2018
Semblable à iOS 11 ergonomiquement, mais contient de nombreuses
améliorations sur les performances et l’économie de la batterie. Elle contient
aussi des fonctionnalités d’hygiène numérique (bonnes pratiques de sécurité)
et de contrôle parental.
!69
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
!70
Le développement d’application mobile : Android Vs iOS
‣ La philosophie et structure
!71
!72
Les deux langages coexistent (on peut trouver les deux dans une seule app)
Le développement d’application mobile : Android Vs iOS
Pourquoi ?
!73
!74
Tout message peut être envoyé à n'importe quel objet. C’est à l’objet de gérer
le message ou non. S'il ne le gère pas, il ne fera que renvoyer nuls à
l’expéditeur (alors que dans le cas d’appel, si une méthode n’exige pas, il y aura
une erreur de compilation/exécution).
!75
Pourquoi ?
• Un portage vers Android plus compliqué ! Porter une app d'iOS vers
Android, et vice-versa, est relativement simple grâce à des traducteurs
entre Objective-C et Java. En s'éloignant du C avec Swift, Apple pourrait
bien s'assurer la fidélité exclusives des développeurs iOS, ce qui ne plaît pas
à tout le monde.
!76
Le développement d’application mobile : Android Vs iOS
!77
!78
La structure du projet
La structure du projet
La structure du projet
!84
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
!85
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
!86
!87
Le développement d’application mobile : Android Vs iOS
‣ Les différences techniques en développement d’application
Le test de l’application
• En outre, tester les apps iOS sur un appareil est le meilleur moyen
d'évaluer les problèmes de performance avant qu'il ne soit trop tard.
• Exigences :
!
• inscription dans le programme pour développeurs iOS d'Apple, pour
99 $ par an (avant 2015)
• un appareil iOS réel.
!90
Le développement d’application mobile : Android Vs iOS
• Acheter une licence développeur (99 € par an) (our pouvoir publier des
applications sur l’AppStore)
!91
Le développement d’application mobile : Android Vs iOS
• Pour publier il faut attendre des jours et des jours (environ 3-4
semaines) (beaucoup de restrictions)
• Une fois une année on ne paye pas l’abonnement toutes les anciennes
applications seront supprimées :)
!92
Le développement d’application mobile : Android Vs iOS
La monétisation de l'application
• Pour les applications iOS, le prix d’une app peut être choisi parmi des
tranches entre 0,79 € et 799,99 €
• Les utilisateurs sur iOS ont dépensé 38,5 milliards de dollars pour acheter
des applications et faire des achats in-app (en 2017)
!93
Comparaison
Le développement d’application mobile : Android Vs iOS
Architecture
!95
Le développement d’application mobile : Android Vs iOS
Principaux composants
!96
Le développement d’application mobile : Android Vs iOS
Swift VS Kotlin
Coercition
Tableaux
!97
Le développement d’application mobile : Android Vs iOS
Swift VS Kotlin
Classes
http://nilhcem.com/swift-is-like-kotlin/ !98
Le développement d’application mobile : Android Vs iOS
Tests
!99
Le développement d’application mobile : Android Vs iOS
IHM
!100
Le développement d’application mobile : Android Vs iOS
Le bouton « Retour »
!101
Le développement d’application mobile : Android Vs iOS
Le coût
!102
Le développement d’application mobile : Android Vs iOS
La monétisation
• En ce centrant sur la source de revenus, les apps iOS ont plutôt tendance à
faire payer les utilisateurs pour les téléchargements et les services payant
incorporés, tandis que les apps Android sont habituellement gratuites et
deviennent rentables par le biais des publicités.
• 2,8 millions d’applications sont disponibles sur le Google Play Store et 2,2
millions d’applications sur l’App Store d’Apple (mars 2017)
Le développement d’application mobile : Android Vs iOS
!105
Le développement d’application mobile : Android Vs iOS
Confidentialité
Confidentialité
!108