2. Sommaire
2
1. Le mobile et ses technologies
2. L’industrialisation
1. Socle, Forge, Gestion
3. Et le dev
1. Rex sur 5 années de projet
2. La Clean Architecture
3. Standardisation Vs Performance
4. Industrialiser le dev de feature
1. Moteur de template multi-techno
1. Android, iOS, Kmm, Flutter, …
2. Adaptable aux spécificités
5. Proposition de projet d’industrialisation du dev
4. 4
Suite à la conférence de la Google I/O présentant entre autres Android
12, Niji a souhaité réaliser un document regroupant les nouveautés et
les impacts potentiels sur les applications mobiles en maintenance
ou les nouvelles applications.
Introduction
6. Nouveautés
6
Description :
• Fournit une API unifié pour gérer les insertions de contenu riche
(image, vidéo, …) depuis le presse-papier, le drag and drop et le
clavier
https://developer.android.com/about/versions/12/features/unif
ied-content-api
API d'insertion de contenu riche
7. Nouveautés
7
Description :
• Splash screen par défaut utilisant l'icône (animation fluide car
gérée par le système)
• Possibilité de personnaliser le splash screen (thème, propriétés
de l'animation, icône animés)
https://developer.android.com/about/versions/12/features/spl
ash-screen
API de splash screen
8. Nouveautés
8
Description :
• Ajout de coins arrondis
• Prise en compte des couleurs du thème
• Simplification de la personnalisation des widgets
• Ajout de nouveaux groupes de boutons
• Amélioration de la gestion des positions et dimensions
• Faciliter la gestion de sélection de widget
• Transition plus fluide vers l'application
• Simplification de l'intégration des vues complexes
https://developer.android.com/about/versions/12/features/wid
gets
Amélioration de l'API de widget
9. Nouveautés
9
Description :
Ajoute un écran dans les settings permettant de visualiser
l'historique des accès aux données sensibles :
• Localisation
• Camera
• Microphone
https://developer.android.com/about/versions/12/features#pr
ivacy-dashboard
Dashboard de gestion de la vie privée
10. Nouveautés
10
Description :
Support de filtres sur les vues :
• Flou d'arrière-plan
• Filtre de couleur
• Autres effets graphiques
Note : pas de rétrocompatibilité prévue pour le moment, le
support peut varier selon les devices
https://developer.android.com/about/versions/12/features#re
ndereffect
Nouvelle gestion des filtres de vues
11. Nouveautés
11
Expérience utilisateur
• Nouvelle API rounded corner permettant d'éviter qu'une vue ne soit tronquée sur les écrans arrondis
• Amélioration du mode Picture in Picture
• Ajout de la possibilité de produire des vibrations en fonction du flux audio
• Amélioration de la gestion des gestures en mode immersif
• Ajout de styles de notification d'appels en cours et entrants
• Amélioration du support des images dans les notifications
Stockage
• Ajout d'un dossier pour stocker les enregistrements audio
• Ajout de permissions de gestion des médias
• Restriction de l'accès à la gestion du stockage applicatif
Divers
12. Nouveautés
12
Vie privée & sécurité
• Ajout d'une permission pour pouvoir cacher les fenêtres superposées
• Ajout d'un flag pour indiquer si une notification requiert l'authentification ou non
• Ajout de permissions supplémentaires pour gérer plus finement l'accès au bluetooth
Médias
• Ajout d'un transcodage automatique des médias
• Ajout de la gestion des DRM sur les médias
• Ajout d'un classement de performance des devices en fonction de leurs capacités
Divers (2)
13. Nouveautés
13
Graphisme & image
• Amélioration du décodeur d’image, qui supporte désormais les animations (GIF & WebP)
• Ajout du support du format d’image AVIF (AV1 for Image Files)
Connectivité
• Simplification de la gestion des companion devices (e.g. smartwatch, etc)
• Améliorations de la gestion du Wifi-Aware / Neighbor Awareness Networking
Autres
• Ajout d’options permettant de désactiver des fonctionnalités Android 12 pour des tests de compatibilité
• Ajout d’une API pour accéder aux crashes natifs depuis l’application (i.e. sans ADB)
• Nouvelle API de gestion des cameras à ultra-haute résolution
Divers (3)
15. Impacts
15
Il existe deux types d'impacts :
→ Ceux affectant toutes les applications dès lors qu'elles tournent sur un téléphone Android 12
→ Ceux affectant uniquement les applications qui ciblent Android 12 ou plus
Préambule
16. Impacts toutes applications
16
Description :
• Changement de l'effet du scroll en début et fin de liste
(remplacement du halo par un étirement des éléments)
Impacts :
• Vérifier le comportement des vues qui sont scrollables (surtout
si elles utilisent des comportements non standard)
https://developer.android.com/about/versions/12/overscroll
Overscroll
17. Impacts toutes applications
17
Description :
• Si une notification qui disparaît automatiquement reste visible moins de
10s, elle n'est pas affichée
Impacts :
• Certaines notifications transitoires peuvent ne plus apparaître
https://developer.android.com/about/versions/12/behavior-changes-
all#foreground-service-notification-delay
Notification des services de foreground
18. Impacts toutes applications
18
Description :
• La gestion des URLs que peut intercepter une application a
changé
Impacts :
• L'ouverture d'une URL gérée par l'application requiert la
validation du domaine par cette application. Dans le cas
contraire, l'URL sera ouverte dans le navigateur par défaut
https://developer.android.com/about/versions/12/web-intent-
resolution
Résolutions des URLs applicatives
19. Impacts toutes applications
19
Description :
• Ajout d'une nouvelle catégorie "Restricted", qui limite les
ressources allouées aux applications trop gourmandes
Impacts :
• Les performances des applications dispendieuses pourront être
impactées
https://developer.android.com/about/versions/12/behavior-
changes-all#restrictive-app-standby-bucket
Restriction des applications gourmandes en ressource
20. Impacts toutes applications
20
Description :
• La barre de statut indiquera l'activité du microphone et de la
caméra
• L'utilisateur peut désormais désactiver la caméra et le
microphone via les quick-settings
Impacts :
• Si la camera est désactivée, le flux sera vide mais l'utilisateur
aura un message système l'invitant à la réactiver
https://developer.android.com/about/versions/12/behavior-
changes-all#mic-camera-toggles
Microphone et caméra
21. Impacts toutes applications
21
Description :
• L'utilisateur sera averti de l'application d'origine d'un texte
copié-collé
Impacts :
• Aucun, un toast apparaitra au moment du copié-collé
https://developer.android.com/about/versions/12/behavior-
changes-all#clipboard-access-notifications
Presse-papier
22. Impacts toutes applications
22
• Blocage des événements de touch non légitimes
• Les applications ne peuvent plus fermer les dialogues systèmes
• Changement sur le filtrage de la liste des applications du téléphone visibles par les autres applications
• Suppression de classes de cryptographie issues de la bibliothèque Bouncy Castle
• Changements sur la gestion des portails captifs Wi-Fi
Autre impact notable, purement technique (non lié à Android 12) :
• Les références aux vues via les view synthetics (déjà dépréciées) ne seront plus supportées dans les
nouvelles versions de Kotlin (à remplacer par les view bindings). Suivant la masse de code, la migration
–bien que non complexe– peut représenter une charge importante.
Divers
23. Impacts applications Android 12+
23
Description :
• Les notifications utilisent désormais un template commun avec
une zone personnalisable
Impacts :
• Toutes les applications qui utilisent setCustomContentView()
doivent vérifier et adapter leurs layouts dans les différents états
(développé, réduit et flottant)
https://developer.android.com/about/versions/12/behavior-
changes-12#custom-notifications
Notifications personnalisées
24. Impacts applications Android 12+
24
Description :
• Pour des raisons de respect de la vie privée, la résolution des
capteurs de mouvement est bridée à 200Hz
Impacts :
• Les applications utilisant l'accéléromètre, le gyroscope et le
capteur de champ magnétique terrestre recevront moins de
valeurs
https://developer.android.com/about/versions/12/behavior-
changes-12#motion-sensor-rate-limiting
Bridage des capteurs de mouvements
25. Impacts applications Android 12+
25
Description :
• La gestion des cookies dans les Webview a été modifiée pour
gérer l'attribut SameSite
Impacts :
• Vérifier le bon fonctionnement des Webwiew si l'application en
utilise, et notamment toutes les transitions entre pages sécurisées
et non-sécurisées (e.g connexion, paiement)
https://developer.android.com/about/versions/12/behavior-
changes-12#samesite
Modification de la gestion des cookies
26. Impacts applications Android 12+
26
Description :
• Lorsque l'application demande une localisation précise,
l'utilisateur aura malgré tout la possibilité de ne fournir qu'une
localisation approximative
Impacts :
• Les applications qui demandent la permission de la localisation
précise doivent en même temps demander la localisation
approximative
• L'utilisateur pourra choisir de ne donner qu'une permission de
localisation approximative et l'application devra se comporter en
conséquence
https://developer.android.com/about/versions/12/approximate
-location
Restriction des localisations précises
27. Impacts applications Android 12+
27
Description :
• Si une application n'est pas utilisée pendant quelques mois, le
système réinitialise les permissions de l'application et la place en
hibernation
• L'utilisateur peut désactiver l'hibernation pour certaines
applications
Impacts :
• Dans ce mode, l'application voit son cache effacé, ne peut plus
utiliser de jobs, ni recevoir de notifications push
https://developer.android.com/about/versions/12/behavior-
changes-12#app-hibernation
Hibernation
28. Impacts applications Android 12+
28
Description :
• Tous les composants utilisant des intent filters doivent
désormais avoir l'attribut exported de spécifié explicitement
dans le manifest
Impacts :
• S'il n'est pas déclaré dans le manifest, l'application ne pourra pas
être installée sur Android 12
https://developer.android.com/about/versions/12/behavior-
changes-12#exported
Déclaration des composants de l'application
29. Impacts applications Android 12+
29
Description :
• Les pending intents, utilisés notamment pour les notifications et
les receivers d'événements, devront être déclaré mutables ou
immutables explicitement
Impacts :
• Si FLAG_MUTABLE ou FLAG_IMMUTABLE n'est pas
déclaré à la création de l'intent, celle-ci crashera
https://developer.android.com/about/versions/12/behavior-
changes-12#pending-intent-mutability
Création des pending intents
30. Impacts applications Android 12+
30
Description :
• Les notifications qui lancent une activité sur le tap doivent le
faire directement
Impacts :
• Si des notifications de l'application déclenchaient un service ou
un receiver d'événements qui lui-même déclenchait une activité,
cela ne fonctionnera plus
https://developer.android.com/about/versions/12/behavior-
changes-12#notification-trampolines
Notification trampoline
31. Impacts applications Android 12+
31
Description :
• Une application en background ne peut plus lancer de
foreground service sauf exception
Impacts :
• Si l'application appelle un service foreground depuis le
background, vérifier que le cas d'utilisation fait partie des
exceptions. Sinon, utiliser le WorkManager
https://developer.android.com/about/versions/12/foreground-
services
Restriction sur le lancement des services foreground
32. Impacts applications Android 12+
32
Description :
• Pour libérer de la ressource système, l'application doit demander
un accès spécial pour pouvoir utiliser l'exact alarm
Impacts :
• Les applications qui utilisent les exact alarms doivent répondre à
des use-cases très précis et demander la permission
SCHEDULE_EXACT_ALARM, autrement l'application
crashera
https://developer.android.com/about/versions/12/behavior-
changes-12#exact-alarm-permission
Permission d'alarme
33. Impacts applications Android 12+
33
• Restrictions des sauvegardes via ADB
• Changements sur le data access auditing API
• Fonctions de débogage lors du lancement d'intent suspect
• Support des paiements NFC avec écran éteint
• Support des connexions peer-to-peer Wi-Fi en même temps que la connexion Wi-Fi principale
• Réduction de la surface d'API du SDK
• Changements sur la sauvegarde et restauration cloud / device-to-device
Divers