Vous êtes sur la page 1sur 51

Module (M17) :

Programmation mobile

Chapitre 1 : Généralités sur le


développement des applications
mobiles et le système
d’exploitation Android

Pr. Yassine SADQI


y.sadqi@usms.ma
Plan

1. Généralités sur le développent d’application mobile


2. Généralités sur le système d’exploitation Android
3. Architecture de la plateforme Android

Pr. Yassine SADQI 2


I. Généralités sur le
développement
d’application mobile

3
Développement d'applications

Applications (Apps)

1. Desktop Apps:
Java SE; C#; C++, … 3. Mobile Apps
2. Web Apps:
PHP; Java EE; ASP;

Pr. Yassine SADQI 4


Développement Mobile

• Il existe trois manières pour développer des


applications mobiles:
1. Développement mobile natif
2. Développement mobile Web
3. Développement Cross-platform

Pr. Yassine SADQI 5


Développement Mobile

Pr. Yassine SADQI 6


Application mobile Native ?

• Application développé avec un langage spécifique et destinée à un est un seul


système d’exploitation.
• Les apps natives utilisent toutes les fonctionnalités offertes par l'appareil
mobile( GPS, SMS, Appels, Caméra, Gestion de l’énergie, ….)

Société Système Langage de Plateforme de


d’exploitation développement distribution
Google Android Java , ( Kotlin: Google Playstore
annoncé en 2017)
Appel iOS Objective-C, Swift ( App Store
depuis 2014)
Microsoft Windows Phone C# Microsoft Store
Pr. Yassine SADQI 7
Application mobile Native ? ( Kotlin Vs Java)

• The authors (Important results):


o did not observe any significant difference in terms of maintainability between
the two languages;
o found a significant difference regarding the amount of code written, which
constitutes evidence of better conciseness of Kotlin
o concerning ease of development, the frequency of NullPointerExceptions
reported by the subjects was significantly lower when developing in Kotlin
o the IDE support was deemed better for Java than Kotlin

Ardito, L., Coppola, R., Malnati, G., & Torchiano, M. (2020). Effectiveness of Kotlin vs. Java in android
app development tasks. Information and Software Technology, 127, 106374.
Pr. Yassine SADQI 8
Application mobile Native ?

• La figure ci-dessous montre l’architecture générale des applications mobiles


natives:

Pr. Yassine SADQI 9


Application web mobile?

• Une application web mobile est une application développée en utilisant


les langages du web (HTML, CSS, Java Script,…)
• Elle est accessible et exécutable par le biais du navigateur web de
l’appareil mobile.
• Ces applications sont conçus spécifiquement pour
fonctionner dans les tailles d'écran des appareils mobiles quelques
soient leur marque et système d’exploitation.
• Ne nécessite pas de télécharger l'application.
• Par contre, il n’est pas possible d’accèder aux API
natives ni à la plateforme. Il est aussi difficile de créer des applications
conviviales sur ce type d’application.

Pr. Yassine SADQI 10


Application web mobile?

• Elle est visuellement moins adaptée qu’une application native, car le


navigateur reste présent lors de l’exécution, comme le montre la figure ci-
dessous :
App Web App Native

Pr. Yassine SADQI 11


Application web mobile?

• Architecture logique d'une application web mobile

Pr. Yassine SADQI 12


Application web mobile?

Pr. Yassine SADQI 13


Application web mobile?

https://getbootstrap.com/

Pr. Yassine SADQI 14


Cross platform mobile development?

• Le développement mobile cross-platform ou bien multiplateforme est


une approche qui offre la possibilité de réaliser une seule application
mobile capable de fonctionner sur les divers systèmes d’exploitation
mobile (Android, iOS, …): Write Once, Run Anytime (WORA) technique
across all platforms.
• Pour les start-ups et les PME, le développement multiplateforme est
peut-être un choix parfait en tant qu'excellente forme de technologie
sur diverses plateformes.

Pr. Yassine SADQI 15


Cross platform mobile development?
• Biørn-Hansen et al. ont proposé de spéraer les approaches de développement cross platform en
cinq approaches: Hybrid, Intrepreted, Cross-compiled, Model-Driven, and Progressive Web
Apps (PWA)

Biørn-Hansen, A., Grønli, T. M., & Ghinea, G. (2018). A survey and taxonomy of core concepts and research
challenges in cross-platform mobile development. ACM Computing Surveys (CSUR), 51(5), 1-34.

Pr. Yassine SADQI 16


Cross platform
• Biørn-Hansen et al. ont proposé de spéraer les approaches de développement cross platform en
cinq approaches: Hybrid, Intrepreted, Cross-compiled, Model-Driven, and Progressive Web
Apps (PWA)

Pr. Yassine SADQI 17


Cross platform: Approche hybride

• Une application hybride est constituée de deux grands éléments:


1. Éléments des apps web:
 Pour la partie présentation des éléments de l’interface on utilise:
• Des Framework CSS créées pour les applications mobiles (Bootstrap, …)
• Des Framework Java Script ( Angular JS, JQuery Mobile, Dojo, Sencha Touch, …)
 Pour la partie Interaction avec le serveur, on utilise des Framework Ajax
2. Eléments des apps natives permettent d’utiliser toutes les fonctionnalités natives des
smartphones ( SMS, caméra, ….)
 Pour interagir avec les fonctionnalités natives, on utilise deux Frameworks de base:
• Apache CORDOVA
• Adobe PhoneGab

Pr. Yassine SADQI 18


Application hybride?

Architecture logique d'une application hybride typique

Une webview, c'est un composant


disponible sous Android et iOS pour
afficher, par exemple, de l'HTML ou
l'URL d'un site web. Grâce à une
webview, nous ne sommes donc pas
obligé de créer une vue en langage
natif.

Pr. Yassine SADQI 19


Cross platform: React Native & Flutter

• Ces dernières années, React Native et Flutter ont largement contribuer au


dévelopepment de l’approche cross plateforme:

Pr. Yassine SADQI 20


Cross platform: React Native & Flutter

• React Native et Flutter sont les technologies les plus populaires pour le
développement de logiciels multiplateformes d'applications mobiles pendant deux
années consécutives, selon Statista.

Pr. Yassine SADQI 21


Cross platform: React Native & Flutter

Stack Overflow
Trends

Pr. Yassine SADQI 22


Cross platform: React Native & Flutter

Who's using React Native?


https://reactnative.dev/showcase

Apps take flight with Flutter:


https://flutter.dev/showcase

Pr. Yassine SADQI 23


Cross platform: React Native & Flutter

“In today’s modern tech world everything is changing rapidly. The earlier
you appear on the market, the bigger pie of it you can obtain. React
Native launched two years earlier than Flutter and that is the main reason
React Native dominates in cross-platform development. However,
Flutter is on the right track, as its adoption rate is growing quicker. It’s
only a matter of time before Flutter overtakes the leadership of the
market”

https://nix-united.com/blog/flutter-vs-react-native/

Pr. Yassine SADQI 24


Quelle approche utiliser ?

• Le choix de l’un des ces approches est une phase très importante qui
précède le développement d’une application mobile.
oQuestion 1: Quelle est la meilleure approche?
oQuestion 2: Comment choisir l'approche la plus appropriée pour un
besoin particulier?
• Pour répondre à ces questions LACHGAR et ABDALI ont proposé une
série de questions (14 questions) afin de dégager la bonne approche
pour développer une application mobile avec des exigences bien
spécifiques.
Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv.
Comput. Sci. Appl, 8(2).

Pr. Yassine SADQI 25


Quelle approche utiliser ?

• Q 1: Doit-il être publié sur un magasin d'applications principal?


• Q 2: fonctionne-t-il en mode hors ligne?
• Q 3: Voulez-vous le vendre?
• Q 4: Est-ce une application simple?
• Q5: Sera-t-il fréquemment utilisé par l'utilisateur?
• Q 6: Y a-t-il un besoin immédiat de livrer l'application sur le marché?
• Q 7: Avez-vous un budget distinct pour les développeurs dans chaque
système d'exploitation?
Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv.
Comput. Sci. Appl, 8(2).

Pr. Yassine SADQI 26


Quelle approche utiliser ?

• Q8: Avez-vous besoin de nombreuses fonctionnalités natives dans l'application


mobile?
• Q 9: La sécurité des applications est-elle une priorité élevée?
• Q 10: Doit-il être très fluide?
• Q 11: Voulez-vous beaucoup d'animations?
• Q 12: Construisez-vous une application qui nécessite beaucoup de calcul
algorithmique?
• Q 13: Voulez-vous être toujours à jour avec les dernières versions du système
d'exploitation?
• Q 14: Voulez-vous avoir la meilleure expérience utilisateur?
Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv. Comput.
Sci. Appl, 8(2).
Pr. Yassine SADQI 27
Quelle approche utiliser ?

• Le tableau ci-dessous donne les réponses à ces 14 questions pour chaque


approche de développement mobile (native, hybride et web):

Lachgar, M., & Abdali, A. (2017). Decision framework for mobile


development methods. Int. J. Adv. Comput. Sci. Appl, 8(2).

Pr. Yassine SADQI 28


Quelle approche utiliser ?

“Our results indicate that the use of cross-platform frameworks


for the development of mobile apps may lead to decreased
performance compared to the native development approach.
Nevertheless, the results also indicate that certain cross-
platform frameworks can perform equally well or even better
than native on certain metrics but no framework scores best
across all features in this study.”

Biørn-Hansen, A., Rieger, C., Grønli, T. M., Majchrzak, T. A., & Ghinea, G. (2020). An empirical
investigation of performance overhead in cross-platform mobile development frameworks. Empirical
Software Engineering, 25, 2997-3040.
Pr. Yassine SADQI 29
Quelle approche utiliser ?

• « Our findings suggest that cross-platform development has seen much progress
but the challenges are ever growing. Therefore, additional support for app
developers is warranted”

Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app
development approaches. Journal of Systems and Software, 153, 175-199.

Pr. Yassine SADQI 30


Quelle approche utiliser ?

Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app
development approaches. Journal of Systems and Software, 153, 175-199.

Pr. Yassine SADQI 31


Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app
development approaches. Journal of Systems and Software, 153, 175-199.

Pr. Yassine SADQI 32


Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app development
approaches. Journal of Systems and Software, 153, 175-199.
Pr. Yassine SADQI 33
II. Généralités sur le
système d’exploitation
Android

34
Un peu d’histoire: plateformes type Symbian

• Historiquement, les développeurs utilisaient des langages bas


niveau e.g. C ou C++
oBesoin de connaître le matériel spécifique pour lequel ils
codaient
oApproche dépassée avec les avancées d’Internet et de
l’accès mobile.

Pr. Yassine SADQI 35


Un peu d’histoire: L’apparition des MIDlets Java

• L’avancée la plus importante dans le développement mobile.


• Un MIDlet Java est exécuté par une machine virtuelle Java:
oProcessus qui fait abstraction du matériel sous-jacent
oPossibilité de créer des applications pour une large gamme
d’équipements supportant l’environnement d’exécution
Java –malgré l’accès restreint au matériel

Pr. Yassine SADQI 36


Un peu d’histoire: L’arrivée d’Android

• Android (date de sortie initiale 2008) arrive aux côtés d’autres


systèmes d’exploitation pour mobiles, comme Windows Mobile et l’iOS
oBâtis sur des systèmes propriétaires, qui, dans certains cas:
 Donnent la priorité aux applications natives au détriment de celles
créées par des tiers
 Limitent la communication entre les applications et les données
natives du téléphone
 Restreignent ou contrôlent la distribution d’applications tierces
sur leurs plateformes.

Pr. Yassine SADQI 37


Un peu d’histoire: L’arrivée d’Android

• Android offre un environnement de développement ouvert,


construit sur un noyau Linux open-source
oL’accès au matériel est permis à toutes les applications au
travers d’une série de bibliothèques d’API;
oL’interaction entre applications est entièrement supportée,
bien que soigneusement contrôlée;
oToutes les applications ont les mêmes droits –utilisation
des mêmes API et exécutées par le même moteur.

Pr. Yassine SADQI 38


Qu'est ce que Android?

• Système d'exploitation pour appareils mobiles basé sur le noyau Linux


• Interface utilisateur pour écrans tactiles
• Utilisé sur plus de 80% de tous les smartphones
• Utiliser dans des appareils tels que les montres, les téléviseurs et les
voitures
• Plus de 2 millions d'applications Android dans Google Play Store
• Hautement personnalisable pour les périphériques / par les vendeurs

Pr. Yassine SADQI 39


Pourquoi développer des applications pour Android?

• Plateforme la plus populaire pour les applications mobiles


• Des applications faciles à développer:
oSDK et bibliothèques
• Documentation riche
• Open source

Pr. Yassine SADQI 40


Pourquoi développer des applications pour Android?

Stack Overflow
Trends

https://insights.stackoverflow.com/trends

Pr. Yassine SADQI 41


III. Architecture de la
plateforme Android

42
Platform Architecture

The Android software stack

Pr. Yassine SADQI 43


Noyau

• Toute l'architecture Android repose sur le


noyau Linux 3.4
oL'environnement d'exécution (Android
Runtime) –pour le déploiementde
fonctionnalités comme la gestion des
threads
oLes différents drivers utilisés par les
applications
• A intégré de nombreuses modifications
• Seuls les constructeurs et les
intégrateurs s'intéressent à ce niveau (ex:
LG, Huawei, …)
Pr. Yassine SADQI 44
Hardware Abstraction Layer (HAL)

• Besoin d'abstraire le niveau matériel?


• Cette couche est imposée par le fait que les applications Google Play doivent
s'exécuter sur toutes les plateformes matérielles Android, quel que soit le
constructeur (Samsung, LG, …)
• Les entrées/sorties (e.g. Bluetooth ou caméra) possèdent des appels standard
définis dans cette couche, en lien avec le driver associé.
• Tous les équipements Android doivent respecter l'Android Compatibility Definition
document (CDD)
o Comportement des interfaces –pour une intégration correcte du logiciel dans
l'écosystème de la plateforme Android
• Le Compatibility Test Suite (CTS) définit les différentes phases de tests associées.

Pr. Yassine SADQI 45


Librairies natives C/C++
• Beaucoup de composants et services
Android (par exemple, ART, HAL) sont
construits à partir de code natif
nécessitant des librairies C/C++.
• La plateforme Android repose sur un
framework d'APIs Java pour exposer les
fonctionnalités de ces librairies aux
applications.
• Pour le développement d'une application
nécessitant du code C/C++, il est possible
d'utiliser Android NDK (Android Native
Development Kit)
o Accès aux librairies natives
directement depuis le code de
l'application.
Pr. Yassine SADQI 46
ART

• Avant l'API 21, l'ART utilisait une machine virtuelle appelé


Dalvik.
• Pour les applications à partir de l'API 21 (Android 5.0),
chaque application s'exécute dans son propre processus,
avec sa propre instance d'Android Runtime (ART)
• ART permet d'exécuter plusieurs VM sur des terminaux à
faible mémoire, en exécutant des fichiers DEX (Dalvik
Executable File)

Pr. Yassine SADQI 47


Java API Framework

• L'ensemble des fonctionnalités Android est disponible à travers des APIs (Application Programming
Interface) Java.
• L’objectif de ce Framework des APIs Java est de simplifier la réutilisation de composants de base,
des modules et de services.

• Ces APIs comprennent les éléments suivants:


1. Système de vues (View System)–pour la création d'IHM (Interface Homme Machine)
2. Gestionnaire de ressources ( Ressource Manager) –pour la gestion de chaînes de caractères, images, fichiers
de mise en page (layout)

Pr. Yassine SADQI 48


Exercice 1: Platform Architecture (Java API Framework)

3. Gestionnaire de notifications (Notification Manager)–pour permettre aux


applications d'afficher des notifications dans la barre de statut.
4. Gestionnaire d'activités (Activity Manager)–pour gérer le cycle de vie des
activités
5. Fournisseurs de contenu (Content Provider)–pour permettre aux applications
d'accéder à des données provenant d'autres applications (par exemples les
contacts du téléphone)

A bien noter: Les développeurs Android ont un


accès complet aux mêmes API que les
applications système Android utilisent:
https://developer.android.com/reference/packages.html

Pr. Yassine SADQI 49


Exercice 1: Platform Architecture (Applications système /natives )

• Un ensemble d'applications de base: email, SMS, agenda, navigation Internet,


contacts, etc.
• Les applications déjà présentes sur la plateforme Android ( System Apps) n'ont
pas de statut particulier par rapport aux autres applications que l'utilisateur choisit
d'installer.
• Avec possibilité d'avoir une autre application pour la navigation Internet ou pour le
clavier, …

Pr. Yassine SADQI 50


Applications système /natives

• Les applications génériques préinstallées faisant partie de


l’Android Open Source Project (AOSP):
https://source.android.com/

Pr. Yassine SADQI 51

Vous aimerez peut-être aussi